我在打字稿中有一个这样的对象”:“ 3.5.2
enum setting02Steps {
CSV_UPLOAD,
CSV_EDITION,
COMPLETED
}
enum setting02Tabs {
TABLE,
TREE,
CSV
}
interface Setting02State {
...
[setting02Steps.CSV_EDITION]?: {
translates: Array<s02Translate>;
leafs: Array<s02Leaf>;
[setting02Tabs.CSV]?: {
csv?: {
name: string;
content: csvParser.ParseResult;
};
loading?: boolean;
};
};
...
}
当我检查未定义的内容时:
if(!this.state[setting02Steps.CSV_EDITION] || !this.state[setting02Steps.CSV_EDITION][setting02Tabs.CSV]) { return; }
httpCall(''blabla, data: this.state[setting02Steps.CSV_EDITION][setting02Tabs.CSV]!.csv.content})
我总是必须用!
来强制对象,否则即使我刚刚检查了上面未定义的内容,编译器在this.state[setting02Steps.CSV_EDITION][setting02Tabs.CSV]
上的错误也可能是未定义的。
为什么这样?