我想问一下,是否可以通过这些类型的并声明一个唯一类型的数组?
我有这种类型的Value
:
type Value = string | number
然后我像这样创建类型Values
:
type Values = Value[]
但是会创建一个类型:
type Values = (string|number)[]
但是如何从Value
类型实现呢?
type Values = string[] | number[]
因为基本上我有一个为表过滤器呈现checkbox
-es的函数。该checkbox
将始终具有string
或number
作为值。
然后,当您单击复选框时,它将把该值添加到数组中。例如,您有一列firstName
,并向该过滤器添加了两个名称。然后它将变成string
的数组或number
的数组:string[] | number[]
,它们代表我的类型Values
。
那么有没有一种方法可以从类型Values
创建类型Value
?
我创建了此示例sandbox只是为了比较这些类型。
谢谢您的输入!
答案 0 :(得分:0)
我会选择模板受限
type Values<T extends string | number> = T[];
const myArr: Values<string> = [
'foo',
'bar',
];
const myArr2: Values<number> = [
1,
2,
];
或使用重载类型(让打字稿根据数组内部内容决定类型)
type ValueTypeA = string[];
type ValueTypeB = number[];
type Values = ValueTypeA | ValueTypeB;
const myArr: Values = [
'foo',
'bar',
];
const myArr2: Values = [
1,
2,
];