这是 TypeScript
infer
关键字的用例示例,ReturnType
的实现:
type ReturnType<T extends (...args:any) => any> = T extends (...args:any) => infer R ? R : never
为什么这里必须有条件?为什么
infer
不能这样用?
type ReturnType<T extends (...args:any) => infer R> = R
这对我来说似乎更加清晰和简洁,特别是在条件的
false
分支是 never
的情况下,因为根据先前的类型限制不允许它。
明确地说,我理解原因是“因为它在 TypeScript 中不能那样工作”。我真的很想问,是否有一个明确的、明确的理由来说明为什么要这样设计?那里有我可以阅读的讨论主题吗?