Angular Машинопись: назначение членов класса пустыми или разница операторов типа объединения - PullRequest
1 голос
/ 11 февраля 2020

В чем разница между присваиванием значений null или заданием оператора типа Union null. В любом случае, оба типа данных позволяют члену класса быть нулевым, поэтому хотелось бы понять. Есть ли разница в поведении?

export class PropertyAddress {
    city?: string = null;
    state?: string = null;
    zipcode?: string = null;


export class PropertyAddress {
    city?: string | null;
    state?: string | null;
    zipcode?: string | null;

Справочная информация о вопросе:

Хотел объявить класс и убедиться, что все члены существуют и начинаются с нуля, если ничего не определено. Была проблема, когда ученики не появлялись в отладчике, если они не были заданы заранее -

Ответы [ 3 ]

2 голосов
/ 11 февраля 2020

Это вещь TypeScript.

Следующая строка

city?: string = null;

означает, что вы объявили атрибут city типа string и initialized it со значением null. В этом случае, если вы установите флаг --strictNullChecks как true в его конфигурации, он выдаст ошибку.

С другой стороны, следующая строка

city?: string | null

означает, что Вы объявили атрибут city типа string или null, и вы можете сделать значение city как null даже с флагом --strictNullChecks, установленным как true.

Для получения дополнительной информации - ознакомьтесь с заметками о выпуске TypeScript 2.0 .

1 голос
/ 11 февраля 2020

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

class test{
    city?: string | null;
    city2?: string = null;
}

Если вы создадите экземпляр тестового класса, значение city будет неопределенным, но значение city2 будет нулевым.

1 голос
/ 11 февраля 2020
  1. city?: string = null;
    Тип города здесь - строка, и вы инициализировали его как ноль.
  2. city?:string | null;
    Мы используем вертикальную черту (|) для разделения каждого типа, так вот строка | null - это тип города, который может быть строкой или нулем. Но city здесь не был инициализирован.

Ознакомьтесь с расширенными типами с подробным объяснением URL: https://www.typescriptlang.org/docs/handbook/advanced-types.html

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...