在 TypeScript 中,为什么 infer 关键字仅限于条件?为什么不是泛型?

问题描述 投票:0回答:0

这是 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 中不能那样工作”。我真的很想问,是否有一个明确的、明确的理由来说明为什么要这样设计?那里有我可以阅读的讨论主题吗?

typescript type-inference
© www.soinside.com 2019 - 2024. All rights reserved.