Объясните утверждения Type в TypeScript
В Typescript утверждение типа — это метод, который информирует компилятор о типе переменной. Утверждение типа похоже на приведение типов, но оно не реконструирует код. Вы можете использовать утверждение типа, чтобы указать тип значения и указать компилятору не выводить его. Когда мы хотим изменить переменную с одного типа на другой, например с любого на номер и т. д., мы используем утверждение типа.
Мы можем использовать угловые скобки <> или ключевые слова для утверждения типа. Когда мы переносим код с машинописного текста на другой язык, в игру вступает утверждение типа. Поддержка среды выполнения обеспечивается приведением типов, тогда как утверждение типа не влияет на среду выполнения. Он используется компилятором.
Пример 1: Утверждение типа с использованием синтаксиса
В этом примере мы присваиваем строку «geeksforgeeks» переменной неизвестного типа. Далее мы присваиваем значение строки другой переменной и вычисляем длину строки. В приведенном ниже коде мы утверждали, что str имеет тип number, используя ключевое слово as.
Javascript
let str: unknown = "geeksforgeeks" ; console.log(str); let len: number = (str as string).length; console.log(len); |
Выход:
geeksforgeeks 13
Пример 2. Утверждение типа с использованием синтаксиса угловых скобок <>
Этот пример аналогичен предыдущему, мы присваиваем число переменной типа any, а затем присваиваем значение другой переменной, и мы утверждали, что переменная num имеет тип «Число». Мы использовали угловые скобки <> вместо ключевых слов.
Javascript
let num: any = 77; // Conversion from any to number let num1 = <Number> num; console.log(num1); console.log( typeof num1); |
Выход:
77 number
Пример 3: Утверждение типа для объектов
Иногда мы можем столкнуться с ситуацией, когда объект определяется без каких-либо свойств. В связи с этим компилятор выдает ошибку. Однако мы можем предотвратить эту проблему, используя утверждение типа. С помощью следующего примера мы можем понять это.
Javascript
interface details {} details.first_name = "Sarah" ; details.last_name = "jane" ; |
Выход:
error TS2693: "details" only refers to a type, but is being used as a value here. details.first_name = "Sarah";
После определения параметров компилятор не выдает ошибку. Компилятор выдает ошибку в предыдущем примере, поскольку не может найти никаких свойств внутри объекта. Утверждение типа помогает нам устранять такие ошибки. Мы использовали утверждение типа для деталей.
Javascript
interface details { first_name: string; last_name: string; } let person_1 = <details>{}; person_1.first_name = "Sarah" ; person_1.last_name = "jane" ; console.log(person_1); |
Выход:
{ first_name: "Sarah", last_name: "jane" }
Ссылка: https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions