Объясните утверждения Type в TypeScript

Опубликовано: 2 Сентября, 2022

В 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