Правила TSLint для проверки неопределенных и NULL-свойств класса - PullRequest
2 голосов
/ 25 мая 2019

В моих веб-приложениях, когда я определяю свойство класса, которое должно содержать некоторый тип данных, я всегда указываю этот тип данных.Но приложение получает данные асинхронно, поэтому на самом деле свойство имеет неопределенное значение, а затем оно имеет реальные данные:

class SomeClass {
    a: ISomeData;

    constructor() {
        getDataAsync().then((res: ISomeData) => this.a = res);
    }
}

Я думаю, что a: ISomeData неверно.Это должно быть a: ISomeData | undefined.(Было бы правильно, если бы this.a = someData был установлен синхронно в конструкторе.) Существуют ли правила tslint для проверки того, что свойство класса не имеет данных и должно иметь неопределенный тип?

1 Ответ

1 голос
/ 25 мая 2019

По умолчанию любой тип, который вы назначаете, может принимать значения undefined и null вместе с любыми объявлениями типов, которые вы сделали.

В вашем конфигурационном файле TypeScript (tsconfig.json) вы можете установить для параметра компилятора StrictNullChecks значение true.

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

Из документов TypeScript на Параметры компилятора :

В режиме строгой проверки на нуль нулевые и неопределенные значения не находятся в домене каждого типа и могут быть назначены только им и любому (единственное исключение, которое является неопределенным, также назначается для void).

Когда вы это делаете, переменная с типом ISomeData может содержать только этот тип.

Если вы хотите неопределенные / нулевые значения, вам нужно будет набрать его как

a: ISomeData | undefined | null;
...