Почему TypeScript допускает нулевое присваивание внутри троичного объекта по адресу strictNullChecks? - PullRequest
1 голос
/ 15 апреля 2020

Я новичок в 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)"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...