ts中的never是啥类型
时间: 2024-06-05 09:12:48 浏览: 21
在 TypeScript 中,`never` 是一个表示永远不会出现的值的类型。它通常用于函数的返回类型,表示该函数永远不会正常返回(例如抛出异常或死循环),也可以用于处理类型推断中的边缘情况。例如,当你有一个类型为 `never` 的变量时,你可以将其分配给任何其他类型的变量,因为不可能存在与 `never` 兼容的类型。
相关问题
ts 类型“never”上不存在属性“formConfig”。
在 TypeScript 中,`never` 是一个表示永远不存在的类型,例如一个不可能被调用的函数的返回类型就可以使用 `never`。如果你在使用一个类型为 `never` 的变量时出现了错误提示“不存在属性XXX”,那么很可能是因为这个变量的类型被 TypeScript 推断为了 `never`,而 `never` 类型上是不存在任何属性的,因此会出现这个错误。
要解决这个问题,你可以检查一下你的变量是否被正确地初始化或声明。如果你确定这个变量的类型应该是一个对象类型,那么你可以尝试将这个变量的类型修改为一个包含必要属性的对象类型,例如:
```typescript
interface MyType {
formConfig: {
// ...
}
}
let myVar: MyType = { formConfig: { /* ... */ } };
```
这样 TypeScript 就可以正确地推断出 `myVar` 的类型了,避免了出现提示错误。
ts中如何得到一个类型中所有类型为number的属性名
可以使用 TypeScript 中的 `keyof` 操作符和 `infer` 关键字,结合条件类型来实现。
以下是一个示例代码:
```typescript
type NumberKeys<T> = {
[K in keyof T as T[K] extends number ? K : never]: K;
}[keyof T];
interface Person {
name: string;
age: number;
address: string;
salary: number;
}
type PersonNumberKeys = NumberKeys<Person>; // "age" | "salary"
```
在这个例子中,我们定义了一个泛型类型 `NumberKeys<T>`,它会返回类型 `T` 中所有属性名组成的联合类型中,类型为 `number` 的属性名组成的联合类型。
具体实现是通过使用映射类型和条件类型来实现的。我们首先遍历 `T` 的所有属性名,然后使用条件类型判断该属性对应的属性值是否为 `number` 类型。如果是 `number` 类型,则将该属性名保留在返回的联合类型中,否则将它映射为 `never` 类型,最后我们使用索引类型查询 `keyof T`,得到所有保留下来的属性名组成的联合类型。
在上面的示例中,`PersonNumberKeys` 的类型就是 `"age" | "salary"`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)