Освоение TypeScript: полное руководство по проверке типов

В мире JavaScript TypeScript стал мощным инструментом, позволяющим разработчикам писать более надежный и безошибочный код. Одной из ключевых особенностей, отличающих TypeScript от простого JavaScript, является его надежная система типов. В этой статье блога мы углубимся в различные методы и приемы проверки типов в TypeScript, чтобы гарантировать, что ваш код удобен для чтения и поддержки.

Метод 1: использование аннотаций типов TypeScript
TypeScript предлагает простой и понятный способ определения типов с помощью аннотаций типов. Явно указав типы переменных, параметров функций и возвращаемых значений, вы можете обнаружить ошибки типов во время компиляции, а не обнаруживать их во время выполнения. Давайте рассмотрим пример:

function addNumbers(a: number, b: number): number {
  return a + b;
}
const result = addNumbers(10, '20'); // Type error: Argument of type '"20"' is not assignable to parameter of type 'number'

Метод 2: использование типов объединения и пересечения
Типы объединения и пересечения — это мощные конструкции в TypeScript, которые позволяют комбинировать несколько типов или извлекать общие свойства из разных типов. Они пригодятся при работе со сценариями, где значение может иметь несколько возможных типов. Рассмотрим следующий пример:

interface Dog {
  name: string;
  breed: string;
}
interface Bird {
  name: string;
  wingspan: number;
}
function printAnimalDetails(animal: Dog | Bird) {
  console.log(`Name: ${animal.name}`);

  if ('breed' in animal) {
    console.log(`Breed: ${animal.breed}`);
  }

  if ('wingspan' in animal) {
    console.log(`Wingspan: ${animal.wingspan}`);
  }
}
const dog: Dog = { name: 'Buddy', breed: 'Labrador' };
const bird: Bird = { name: 'Tweety', wingspan: 30 };
printAnimalDetails(dog);
printAnimalDetails(bird);

Метод 3: использование средств защиты типа
Защиты типа — это условные операторы, которые сужают тип переменной в определенном блоке кода. Они особенно полезны при работе с типами объединений. TypeScript предоставляет несколько встроенных средств защиты типов, таких как typeof, instanceofи in. Давайте рассмотрим пример с использованием защиты типа typeof:

function printMessage(message: string | number) {
  if (typeof message === 'string') {
    console.log(`Message: ${message.toUpperCase()}`);
  } else {
    console.log(`Number: ${message.toFixed(2)}`);
  }
}
printMessage('hello');
printMessage(3.14159);

Метод 4: использование утверждений типа
TypeScript позволяет переопределить предполагаемый тип переменной с помощью утверждений типа. Это может быть полезно, если вы знаете о типе значения больше, чем TypeScript. Однако важно проявлять осторожность при использовании утверждений типа, поскольку при неправильном использовании они потенциально могут привести к ошибкам во время выполнения. Вот пример:

let value: unknown = 'hello';
let length = (value as string).length; // Type assertion
console.log(length); // Output: 5

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