【问题标题】:How to prevent inferring generic type arguments with TypeScript?如何防止使用 TypeScript 推断泛型类型参数?
【发布时间】:2019-07-24 02:50:42
【问题描述】:
我有一个 API/函数,旨在仅用于泛型类型参数(它基于泛型参数强制参数的形状)。我想防止在没有泛型参数的情况下调用 API(从而从参数中推断类型),因为它违背了我的函数的目的,并且会使 API 的用户感到困惑。我宁愿编译器只是强制始终需要泛型类型参数。例如:
function foo<T>(arg: Config<T>) { ... }
如何确保类型参数T 始终由调用者指定?即foo<Bar>({ ...})
【问题讨论】:
标签:
typescript
typescript-generics
【解决方案1】:
它似乎还不是一个功能。这就是the docs 关于泛型和推理的全部内容:
function identity<T>(arg: T): T { return arg; }
let output = identity<string>("myString"); // type of output will be 'string'
let output = identity("myString"); // type of output will be 'string'
请注意,我们不必在尖括号 () 中显式传递类型;编译器只是查看了值“myString”,并将 T 设置为其类型。
基本上就是这样......没有提示如何编写它,以便identity("myString") 引发错误但identity<string>("myString") 不会。