为什么打字稿编译器无法识别按键检查对象?

时间:2019-12-23 02:17:14

标签: typescript

我在打字稿中有一个这样的对象”:“ 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]上的错误也可能是未定义的。

为什么这样?

0 个答案:

没有答案