【发布时间】:2023-01-25 20:31:55
【问题描述】:
我有一个带有泛型的函数,它是 1 个元素的元组或 2 个元素的元组。
我想确保函数中使用的所有属性都使用相同长度的元组。
type TypeA = [string] // Tuple of 1 element
type TypeB = [string, string] // Tuple of 2 elements
type Header = TypeA | TypeB
interface SomeObject<H extends Header> {
prop1: H
prop2: H
}
function useHeader<H extends Header>(someObject:SomeObject<H>) {
// do something
}
useHeader({
prop1: ["tuple of 1 element"],
prop2: [
"tuple of",
"2 elements"
] // <-- I want an error here, because prop1 and prop2 use diffrent tuples
})
我注意到当我将 TypeA 更改为 number 并将 TypeB 更改为 string 时,当我混合数字和字符串时,Typescript 会报错。
当使用不同长度的元组时,是否可以使 Typescript 产生错误?
【问题讨论】:
标签: typescript tuples typescript-generics type-safety