为什么此打字稿模板永不返回?

时间:2019-08-24 23:25:46

标签: typescript

在这个打字稿游乐场中看到的

Typescript Playground

type FirstOrSecond<condition, T1, T2> = condition extends never ? T1 : T2

type foo = never extends never ? () => 'hi' : (arg1: never) => 'hi'
type wtf = FirstOrSecond<never, () => 'hi', (arg1: never) => 'hi'>

通用FirstOrSecondnever分配给wtf变量,而显式定义foo则将() => 'hi'分配为类型。

为什么普通的怪物会出故障?

1 个答案:

答案 0 :(得分:2)

Distributive conditional typesThis is intentional

通常应用的解决方法是在以下情况下将类型包装为单成员元组:

type FirstOrSecond<condition, T1, T2> = [condition] extends [never] ? T1 : T2
相关问题