你能告诉我为什么类型U和W下面不同吗?天真地,您会期望它们是相同的:毕竟,我只是机械地将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的结果是一样的。