Infer 关键字用于条件中的类型推导。 Typescript 官网也拿 ReturnType 这一经典例子说明它的作用: 理解为:如果 T 继承了 extends (...
type Flatten<Type> = Type extends Array<infer Item> ?Item : Type; type Str= Flatten<string[]>;//Str => stringtype Num= Flatten<number[]>;//Num => number type GetReturnType<T> = T extends (...args: never[]) => infer Return ?Return : never; type Num= GetReturnType<() => ...
type Diff<T, U> = T extends U ? never : T; // 找出T的差集 type Filter<T, U> = T extends U ? T : never; // 找出交集 type T30 = Diff<'a' | 'b' | 'c' | 'd', 'a' | 'c' | 'f'>; // => 'b' | 'd' // <'a' | 'b' | 'c' | 'd', 'a' | 'c' ...
type T21 = Bar<{ a: (x: string) => void; b: (x: number) => void }>; // string & number 发现结果是string & number,也就是逆变。但这个例子也是同一个U时而为string时而为number呀,为什么是且的关系,而不是或呢? 其实协变或逆变与infer参数位置有关。在TypeScript中,对象、类、数组和函数...
infer是TypeScript中的一个关键字,主要用于类型推断(type inference)。它允许你在条件类型(conditional types)中进行类型推断,从而提取出某个类型的具体部分。infer关键字通常与条件类型一起使用,以便在编译时进行更复杂的类型操作。 相关优势 类型安全:通过infer关键字,可以在编译时进行更精确的类型检查,减少运行时错误...
infer是typescript中的关键字,可以在extends条件语句中推断待推断的类型,就是从类型中获得类型 (这里的extends不是类、接口的继承,而是对于类型的判断和约束,意思是判断T能否兼容) extends的示例 type ParamType<T,K>=TextendsK?T:never;interfaceAnimal{animal:string}interfaceCat{cat:string}// ParamType的T需要...
typescript 2.8引入了条件类型关键字: extends,长这个样子: Copy TextendsU ? X : Y 看起来是不是有点像三元运算符:condition ? result(1) : result(2),用大白话可以表示为: 如果T包含的类型 是U包含的类型的 '子集',那么取结果X,否则取结果Y。
type NameOnly = ExtractName<Person>; // 类型为 string 1. infer关键字是TypeScript中用于在条件类型中进行类型推断的重要工具。通过使用infer关键字,我们可以根据类型的特性,实现更加灵活和可复用的类型定义。这种类型推断的能力使得TypeScript能够更好地捕获和利用代码中的类型信息,提高开发效率和代码质量。
快速掌握 TypeScript 新语法:Infer Extends Typescript 支持 Infer 类型,可以通过模式匹配的方式,提取一部分类型返回。但是Infer 提取出的类型是 Unknown,后面用的时候需要类似和 String 取交叉类型,或者 xxx Extends String 这样的方式来转换成别的类型来用。这样比较麻烦。
我们知道,TypeScript 支持 infer 来提取类型的一部分,通过模式匹配的方式。 比如元组类型提取最后一个元素的类型: typeLast<Arrextendsunknown[]>=Arrextends[...inferrest,inferEle]?Ele:never; 比如函数提取返回值类型: typeGetReturnType<FuncextendsFunction>=Funcextends(...args:any[])=>inferReturnType?Return...