strictNullChecks
За замовчуванням null
і undefined
можна призначити всім типам у TypeScript, наприклад,
Це змодельовано за тим, як багато людей пишуть JavaScript. Однак, як і всі інші речі, TypeScript дозволяє явно визначити, чому can and cannot be присвоїти значення null
або undefined
.
У режимі суворої перевірки null null
і undefined
відрізняються:
Скажімо, у нас є інтерфейс Member
:
Не кожен Member
вказує свій вік, тому age
є необов'язковою властивістю, тобто значення age
може бути або не бути undefined
.
undefined
- це корінь усього зла. Це часто призводить до помилок виконання. Легко написати код, який видаватиме Error
під час виконання:
Але в режимі суворої перевірки null ця помилка буде виявлена під час компіляції:
Non-Null Assertion Operator
Новий оператор постфіксованого виразу !
може бути використаний для підтвердження того, що його операнд не є нульовим і не визначеним у контекстах, де перевірка типу не може зробити висновок про цей факт. Наприклад:
Зауважте, що це лише твердження, і, як і твердження типу ви відповідаєте за те, щоб значення не було нульовим. Ненульове твердження, по суті, означає, що ви говорите компілятору: «Я знаю, що це не нуль, тому дозвольте мені використовувати його так, ніби воно не нульове».
Definite Assignment Assertion Operator
TypeScript також скаржиться на неініціалізацію властивостей у класах, наприклад:
Ви можете використовувати твердження визначеного призначення, додане до назви властивості, щоб повідомити TypeScript, що ви ініціалізуєте його десь, крім конструктора, наприклад.
Ви також можете використовувати це твердження з простими оголошеннями змінних, наприклад:
Як і всі твердження, ви говорите компілятору довіряти вам. Компілятор не скаржиться, навіть якщо код насправді не завжди призначає властивість.
Last updated