关于typescript中的extends和infer以及用法
在TypeScript中,extends
关键字被用于实现泛型类型和接口约束,而infer
关键字则用于类型推断。
- 泛型约束:
interface A<T> {
value: T;
}
interface B<T> extends A<T> {
extra: T;
}
在这个例子中,接口B
继承了接口A
,并添加了一个新的属性extra
。
- 类型推断:
type A<T> = T extends any ? T : never;
在这个例子中,infer
关键字用于从泛型类型中推断出T
的类型。
- 泛型类型推断:
type B<T> = T extends { a: infer U } ? U : never;
在这个例子中,如果T
具有属性a
,那么infer U
将会是T.a
的类型,并且这个类型将用来构建B
的结果类型。
注意:infer
关键字只能在泛型类型中的extends子句中使用,并且必须直接作用于类型参数。
评论已关闭