1

私は TypeScript を初めて使用しますが、一貫性のない動作が見られます。三項代入の一部としてインターフェイスに null を割り当てることができますが、if/else フローを介してそうするとエラーが発生します (以下を参照してください)。

プロジェクトは strictNullChecks を適用するように設定されているため、両方のアプローチでエラー 2322 が発生すると予想されます。

私は何が欠けていますか?

'use strict';

//NOTE: The following is set in tsconfig.json:
//      "strictNullChecks": true

const CONDITIONALLY_ASSIGNED:any = 0;

interface IFoo {
    unused: string;
}

export class Bar {
    _testFlow:IFoo;
    _testTernary:IFoo;

    constructor() {
        const FORK:boolean = Math.random() < 0.5;

        this._testTernary = FORK ? CONDITIONALLY_ASSIGNED : null; // no error; why not?

        if (FORK) {
            this._testFlow = CONDITIONALLY_ASSIGNED;
            return;
        }

        this._testFlow = null; // ERROR: "Type 'null' is not assignable to type 'IFoo'.ts(2322)"
    }
}
4

0 に答える 0