如何声明布尔OR对象类型



尝试创建一个变量,该变量可以是true/false,也可以是booleans的对象。我对TS不是很有经验,这样的事情可能吗?

variableA: { a: boolean, b: boolean } | boolean

决定暂时解决这个问题,但很想知道我的语法或方法是否错误。

这里的例子突出了的主要问题

是的,可以这样。

你也可以有这样的界面:

interface Iobj {
a: boolean;
b: boolean;
}
let myVar: Iobj | boolean;

更新:

if((treeObject.tabA as optionType)?.optionA) {
console.log('do something based on optionA')
}

可以。你需要这样定义你的自定义type

type variableA = { a: boolean, b: boolean } | boolean
var f:variableA = false;
console.log(f);
f = {a:true, b:false};
console.log(f);

请注意,variableA是类型而非变量。

游乐场

你也可以写这样的东西:

interface ObjectOfBooleans {
[key: string]: boolean;
};
type YourType = ObjectOfBooleans | boolean;

或更短:

type YourType = Record<string, boolean> | boolean;

可以将true/false值或具有任意数量的boolean类型值对的对象存储到YourType类型的变量中。

最新更新