我有一个对象,我试图键入,该对象似乎没有任何问题,它是当我试图访问一个嵌套的属性,我得到可怕的红色波形。
我做了一些环顾四周,我发现多个帖子建议类似的方法:
type FlagValue = string | boolean | number | { [key: string]: FlagValue };
type FlagSet = { [key: string]: FlagValue | FlagSet};
const defaultFlags: FlagSet = {
tracking: false,
banner: {
display: false,
message: "I am the man with no name, Zapp Brannigan!",
},
theme: "dark",
};
就输入对象而言,它似乎工作得很好,但我遇到问题的地方是当我试图访问任何嵌套属性时
...
Property 'display' does not exist on type 'FlagValue | FlagSet'.
Property 'display' does not exist on type 'string'.
你知道我错过了什么吗
Playground
1条答案
按热度按时间7vhp5slm1#
井
defaultFlags.banner
的类型为:因此,在尝试将值视为对象之前,必须证明值是对象:
参见Playground
或者,您可以更改声明以使用
satisfies
。这将强制FlagSet
的约束,同时保留从赋值的对象文本推断的类型。参见Playground