typescript - 嗨,有沒有辦法讓元組自動推斷?
有沒有辦法讓自動推斷成一個元組?目前的推斷是 (string|boolean)[],問題在於我只想要在一種情況 (A) 下有包含 false 和 string 的陣列,而其他情況只想要 Boolean 值。如何使用自動推斷或其他方法達成,而不需要打整個物件,因為它有點長。
const inicialErrState: { [key: string]: boolean; a: [boolean, string] } = {
a: [false, ''],
b: false,
c: false,
d: false,
};
答案#1
我的建議是使用一個輔助函數來推斷元組類型:
const tuple = <T extends any[]>(...t: T) => t;
const initialErrState = {
a: tuple(false, ''),
b: false,
c: false,
d: false,
};
/* const initialErrState: {
a: [boolean, string];
b: boolean;
c: boolean;
d: boolean;
} */
程式碼的 Playground 連結
答案#2
你可以使用以下類型。這將強制 a 為一個元組,但它允許其他所有值為布林值或元組,所以這不是一個完美的解決方案。不過,它可能對你的使用情況已經足夠有效。
type InitialErrorState = {
[key: string]: [boolean, string] | boolean
} & {
a: [boolean, string]
};
