我是 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)"
}
}