«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Зачем нужны типовые охранники? Изучение различных типов и вариантов их использования

Зачем нужны типовые охранники? Изучение различных типов и вариантов их использования

Опубликовано 8 ноября 2024 г.
Просматривать:890

Why Are Type Guards Necessary? Exploring Different Types and Their Use Cases

Почему необходима защита текста? Изучение различных типов и вариантов их использования

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

Что такое типовая защита?

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

Почему необходима защита текста?

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

Распространенные типы типовых ограждений и варианты их использования

1. typeof Тип охранника

Сценарий использования: базовая проверка примитивных типов.
Пример:

function printValue(value: string | number) {
  if (typeof value === "string") {
    console.log(`String value: ${value.toUpperCase()}`);
  } else {
    console.log(`Number value: ${value.toFixed(2)}`);
  }
}

Объяснение: typeof эффективен для примитивных типов (строка, число, логическое значение). Это позволяет функции по-разному обрабатывать строковые и числовые типы.

2. Пользовательские типы защиты (ключевое слово)

Сценарий использования: для сложной логики, проверка пользовательских фигур или интерфейсов.

Пример:

 interface Square {
    side: number;
  }
  interface Circle {
    radius: number;
  }

  function isSquare(shape: Square | Circle): shape is Square {
    return (shape as Square).side !== undefined;
  }

  function calculateArea(shape: Square | Circle) {
    if (isSquare(shape)) {
      return shape.side * shape.side;
    } else {
      return Math.PI * shape.radius * shape.radius;
    }
  }

Объяснение: Пользовательские средства защиты типа позволяют определять функции, которые проверяют определенные атрибуты для определения типа. Здесь isSquare проверяет наличие свойства Side.

3. в типе оператора Guards

Сценарий использования: проверка наличия у объекта определенного свойства.
Пример:

 interface Car {
    drive(): void;
  }
  interface Boat {
    sail(): void;
  }

  function move(vehicle: Car | Boat) {
    if ("drive" in vehicle) {
      vehicle.drive();
    } else {
      vehicle.sail();
    }
  }

Объяснение: оператор in проверяет наличие свойства, помогая TypeScript понять тип и обеспечивая доступ к соответствующим методам.

Заключение

Защита типов — это мощная функция TypeScript, которая обеспечивает точную проверку типов, уменьшает количество ошибок и улучшает читаемость и удобство обслуживания кода. Используя typeof, instanceof, специальные средства защиты типов и оператор in, вы можете безопасно и эффективно обрабатывать сложные типы в проектах TypeScript.

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/naymhdev/why-are-type-guards-neeceary-expectoring-different-types-and-hor-cases-2f8e?1, если есть какие-либо нарушения, пожалуйста, свяжитесь с исследованием[email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3