ts 中 infer 跟 as 区别
时间: 2024-09-11 15:08:17 浏览: 39
28-Infer倒叙递归.ts
在TypeScript(TS)中,`infer` 和 `as` 都用于类型推导,但它们的作用和应用场景不同:
1. **infer** (推断):当你有一个联合类型的变量,而你想从这个变量中提取出其中一种类型,可以使用 `infer` 关键字。例如:
```typescript
type Shape = 'circle' | 'square';
let size: number;
const radius = (shape: Shape): shape is 'circle' extends true ? number : never => {
if (shape === 'circle') {
infer T from 'circle'; // 推断出 T 等于 'number'
size = T; // 此处大小应为 number 类型
}
return undefined;
};
```
这里 `infer T from 'circle'` 表示从 `'circle'` 推断出类型 `T`。
2. **as** (类型转换):`as` 关键字用于显式地将一种类型转换为另一种类型,它主要用于类型检查或类型提示,并不会改变实际值。例如:
```typescript
let stringValue: string = "Hello";
let numericValue: number = stringValue as number; // 将字符串转换为数字,如果字符串无法转换成数字,会报错
```
总结来说:
- `infer` 主要在类型推导中用于动态地获取类型信息,帮助你编写更灵活、可读的代码。
- `as` 则是静态类型强制转换,通常用于类型安全的转换,但在运行时不会改变数据的实际值。
阅读全文