类中字符串属性的打字稿中可能存在类型细化错误

时间:2020-01-30 22:10:46

标签: typescript

这是我最简单的示例:

class Game {
    phase: "draw" | "action";

    constructor() {
        this.phase = "draw";
    }

    randomChangePhase() {
        if(Math.random() > 0.5) {
            this.phase = "action";
        } else {
            this.phase = "draw";
        }
    }

    doTurn(){
        if(this.phase !== "draw") {
            throw new Error(`cannot call doTurn in phase ${this.phase}`);
        }

        this.randomChangePhase();

        while(this.phase !== "action") {
            this.randomChangePhase();
        }

        console.log(this.phase);
    }
}

使用tsc版本3.7.5,我看到此错误:

typescript / test.ts:24:15-错误TS2367:这种情况将始终存在 因为类型“ draw”和“ action”没有重叠,所以返回“ true”。

24 while(this.phase!==“ action”){ ~~~~~~~~~~~~~~~~~~~~~~

发现1个错误。

你们能否证实我的理解,这实际上是一个错误?

如果是这样,是否知道这是一个已知错误,或者是否有办法在配置中解决此问题?

编辑:抱歉,代码缺少关键部分。

0 个答案:

没有答案