私は 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)"
}
}