0

你能告诉我为什么类型UW下面不同吗?天真地,您会期望它们是相同的:毕竟,我只是机械地将Weird类型参数出现的定义替换为应用T的具体类型Weird

type Weird< T > = T extends undefined ? never : T;

type X = number | undefined;

type U = X extends undefined ? never : X;  // U is number | undefined

type W = Weird< X >;  // W is number

环境:我使用的是TS 3.7.5,但是我已经验证了TS 3.9.2的结果是一样的。

4

1 回答 1

0

与此同时,我了解到这种行为可以通过条件类型分布在泛型类型的正式类型参数中的联合上这一事实来解释。在此处查看详细信息:https ://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types

于 2020-05-17T11:10:07.857 回答