Я новичок в 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)"
}
}