我正在使用TypeScrip中的?
运算符创建一个条件类型.根据一个条件,我希望类型是两种不同的类型.在这样做的时候,我发现这种情况会影响到 twig .
MRE在这里:
type Type1<O> = O extends never ? unknown : (undefined extends O ? 1 : 2);
type a = Type1<string | undefined>
type Type2<O> = undefined extends O ? 1 : 2;
type b = Type2<string | undefined>
或者TS Playground年后.
我希望a
和b
是相同的,因为条件O extends never
永远不应该为真,除非O
是never
.然而,这不是type a = 1 | 2
和type b = 1
的情况;
我想不出一个理由,为什么会出现类型并集,除非Type1
中的条件以某种方式迭代到string | undefined
一元数.
为何会是这样呢?如果我希望a
只是1
,我该如何解决这个问题?