Как типизировать значение?

В TypeScript одной из основных особенностей является возможность типизации значений. Типизация позволяет указать, какой тип данных может содержаться в переменной, параметре функции, возвращаемом значении функции и других местах в коде.

Существует несколько способов типизации значений в TypeScript, которые обеспечивают статическую проверку типов.

1. Аннотация типа:
Аннотация типа происходит путем явного указания типа значения с использованием синтаксиса : после имени переменной или параметра функции, а затем указания типа. Например, для типизации числового значения:

   let num: number = 10;

В этом примере переменная num типизирована как number.

2. Вывод типа:
В TypeScript также есть возможность автоматического вывода типа, основываясь на значении, которое присваивается переменной. Например, если мы назначим переменной число, TypeScript автоматически назначит ей тип number:

   let num = 10; // тип num автоматически определен как number

3. Интерфейсы и типы:
TypeScript позволяет определять пользовательские типы с помощью интерфейсов и типов. Интерфейс позволяет определить структуру объекта, указывая типы свойств и методов. Типы же могут использоваться для определения пользовательских типов данных. Например:

   interface Person {
     name: string;
     age: number;
   }

   let person: Person = {
     name: "John",
     age: 25
   };

В этом примере мы определили интерфейс Person, который указывает, что объект person должен иметь свойства name и age, соответствующие типам string и number.

4. Объединение и пересечение типов:
TypeScript позволяет объединять типы с помощью оператора | и создавать пересечение типов с помощью оператора &. Объединение типа позволяет переменным принимать значения разных типов, пересечение типов позволяет переменным принимать значения, являющиеся общими для двух типов. Примеры:

   let strOrNum: string | number = "Hello";
   let numOrBool: number & boolean = 10; // такой тип совершенно бессмысленный, но возможен

   strOrNum = 5; // допустимо
   strOrNum = true; // недопустимо, так как boolean не является типом string или number

Это основные способы типизации значений в TypeScript. Типизация позволяет обнаружить ошибки в рантайме, а также улучшает подсказки IDE, делая код более понятным и безопасным.