在官方 5.4 增加 NoInfer 之前,可以使用这个类型避免传入的变量用于泛型推断。function test<T>(a: T, b:(c: T)=>void){}比如使用上面的这个函数时,传入的变量 a 和 函数 b 因为都包含了泛型 T,所以会共同作用于泛型 T 的推断。当 a 和 b 中的泛型不一致时会导致泛型 T 推断异常,比如 test(number, (string)=> void) 会导致 T 被推断为 neverfunction test<T>(a: T, b:(c: NoInfer<T>)=>void){}使用 NoInfer 包装 b 函数的参数 c,意思是当推断泛型 T 时,不使用 b 的参数。使用上面的例子, test(number, (string)=> void) 会将泛型 T 推断为 number ,在函数 b 的参数位置会提示类型不匹配。相关可以查看 ts 的官方发布文档。https://devblogs.microsoft.com/typescript/announcing-typescri...
在官方 5.4 增加 NoInfer 之前,可以使用这个类型避免传入的变量用于泛型推断。
比如使用上面的这个函数时,传入的变量 a 和 函数 b 因为都包含了泛型 T,所以会共同作用于泛型 T 的推断。当 a 和 b 中的泛型不一致时会导致泛型 T 推断异常,比如
test(number, (string)=> void)
会导致 T 被推断为never
使用
NoInfer
包装 b 函数的参数 c,意思是当推断泛型 T 时,不使用 b 的参数。使用上面的例子,test(number, (string)=> void)
会将泛型 T 推断为number
,在函数 b 的参数位置会提示类型不匹配。相关可以查看 ts 的官方发布文档。
https://devblogs.microsoft.com/typescript/announcing-typescri...