在条件类型语句中,可以用infer声明一个类型变量并且对它进行使用。 type ReturnType<T> = T extends ( ...args: any[] ) => infer R ? R : any; 复制代码 1. 2. 3. 4. 以上代码中infer R就是声明一个变量来承载传入函数签名的返回值类型,简单说就是用它取到函数返回值的类型方便之后使用。
} // -> { a: any, b: any, c: any } 4.infer 在条件类型语句中,可以用infer声明一个类型变量并且对它进行使用。 type ReturnType<T> = T extends ( ...args: any[] ) => infer R ? R : any; 以上代码中infer R就是声明一个变量来承载传入函数签名的返回值类型,简单说就是用它取到函数返...
4.infer在条件类型语句中,可以用 infer 声明一个类型变量并且对它进行使用。type ReturnType<T> = T extends ( ...args: any[] ) => infer R ? R : any;以上代码中 infer R 就是声明一个变量来承载传入函数签名的返回值类型,简单说就是用它取到函数返回值的类型方便之后使用。
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any; 1. 其实把infer换个位置,比如放到返回值处,它就变成了获取参数类型的Parameters: type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ?
expression, we can use the “infer” keyword to either get the type of the elements of an array, or even to get the return type of a function. We can use this to build a “FnReturnType” type, that will give us the return type of the function passed in as the generic parameter....
参见第一种情况),或者R2是否只是一个意外的键入错误/拼写错误。infer的存在就是为了消除这种歧义。
// 如果T是一个数组,则提取数组中的对象类型type FlattenArray<T> = T extends (infer U)[] : U : T复制代码// 提取函数的返回类型type ReturnType<T> = T extends (...args: any[]) => infer U ? U : T复制代码等等 后记 TypeScript 作为 JavaScript 的强类型超集,在保留了动态类型语言的灵活...
比如typeof,keyof, infer 以及本文要讲的泛型。 「把这些和 JS 中容易混淆的东西分清楚,然后搞懂 TS 特有的东西,尤其是泛型」(其他基本上相对简单),TS 就入门了。 泛型初体验 在强类型语言中,一般而言需要给变量指定类型才能使用该变量。如下代码:
在条件类型语句中,可以用 infer 声明一个类型变量并且对它进行使用。 type ReturnType<T> = T extends ( ...args: any[] ) => infer R ? R : any; 以上代码中 infer R 就是声明一个变量来承载传入函数签名的返回值类型,简单说就是用它取到函数返回值的类型方便之后使用。 5.extends 有时候我们定义的...
infer 在条件类型语句中,可以用 infer 声明一个类型变量,并且对它进行使用。 infer 可以在 extends 的条件语句中推断待推断的类型。示例代码如下: type ParamType<T> = T extends (...args: infer P) => any ? P : T; interface User { name: string; ...