在typescript中,类型为[boolean, string?]的元组不能用于需要[boolean, string] | [boolean]的接口或类型。我的理解是typescript认为它不同,因为在第二种情况下,你要么得到[boolean, string],要么得到[boolean] --而不是一个更通用的同时支持这两种类型的元组类型。对此,我说:当然可以,但编译器仍然将其视为[boolean, string] | [boolean] (即,在运行时它可以是任一类型),那么为什么不将这些类型视为相同的类型呢?不以这种方式简化类型是一个武断的决定,还是这样做会出现缺陷?
发布于 2021-10-19 17:56:04
这些类型是不同的:
// OK
const p1: [boolean, string?] = [true, undefined];
// Error
const p2: [boolean, string] | [boolean] = [true, undefined];https://stackoverflow.com/questions/69635559
复制相似问题