typescript - 相同的元组不相等?
有时在对 Tuples 进行操作时,我们最终会将 [a: 1, b?: 2] 转换为类似 [a: 1, b?: 2 | undefined] 的形式
虽然它没有改变任何东西,但读起来很糟,所以我最终用了这种类型(给定 Cast,它在游乐场中,并且只是确保传入的是一个 ReadonlyArray)
// Given UnNullify that transforms [a: 1, b?: 2 | undefined] -> [a: 1, b?: 2]
type UnNullify <Data extends ReadonlyArray <any>> = Cast <{
[K in keyof Data]: Exclude <Data [K], null | undefined>
}, ReadonlyArray <any>>
我不理解的是,虽然类型计算正确,但它不再与原始类型 Equals(Equals 测试类型是否相等在游乐场中进行)
type T = UnNullify <[a: 1, b?: 2 | undefined]> // [a: 1, b?: 2]
type Test1 = Equals <T, [a: 1, b?: 2]> // false ?? - how come
type Test2 = Equals <[a: 1, b?: 2], [a: 1, b?: 2]> // true as expected
这是有原因吗?如何克服它?
游乐场链接
编辑指向错误请求的链接