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]
};
