Что это означает
Синтаксис variable: type
называется аннотацией типа . В нем говорится, что переменная будет содержать значения указанного типа в течение всего времени его существования, и просит компилятор машинописного текста проверить, что это так.
Синтаксис expression as type
называется утверждением типа . Он говорит, что вы знаете, что выражение даст значение этого типа, и просит компилятор поверить вам.
Почему существуют оба
Необходимы аннотации типов, потому что оно Можно объявить переменную без присвоения ей значения, а также потому, что можно назначить новое значение позже, поэтому изначально присвоенное значение может не отражать всех значений, которые будет иметь переменная в течение всего времени ее жизни.
Утверждения типа необходимы в том случае, если программист действительно знает о типе больше, чем компилятор.
Какой использовать?
Вообще говоря, вы должны отдавать предпочтение типу аннотации, так что компилятор проверяет, правильно ли вы, и обнаруживает больше ошибок. Например, рассмотрим:
let person: Person = {}; // error: property name is missing
против
let person = {} as Person; // the compiler believes you
person.name.toUpperCase(); // runtime error because name is undefined
Однако иногда вы действительно можете знать больше, что делает компилятор, и в этом случае только утверждение типа поможет понять (хотя есть почти всегда лучшие пути).
Приложение: Избегайте any
Пока мы говорим о передовой практике, вам следует избегать any
всякий раз, когда возможно, потому что он также обходит проверки типов:
let obj: any = {}; // totally correct
let person: Person = obj; // compiler believes you, because any is special
person.name.toUpperCase(); // runtime error, because name is undefined