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

【Основы собеседования】частые вопросы на собеседовании по TypeScript

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

【Interview Essentials】ommon TypeScript Interview Questions

github: https://github.com/Jessie-jzn
сайт: https://www.jessieontheroad.com/

1. Зачем использовать TypeScript?

1. Статическая проверка типов

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

2. Расширенные возможности редактирования кода

Система типов TypeScript обеспечивает более точное завершение кода, рефакторинг, навигацию и функции документирования в редакторах, что значительно повышает эффективность разработки.

3. Улучшение удобства сопровождения кода

Объявления типов упрощают понимание целей и структуры кода, что особенно полезно в средах групповой разработки.

4. Расширенные языковые функции

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

5. Улучшенная поддержка инструментов

TypeScript предлагает различные параметры компилятора для оптимизации сгенерированного кода JavaScript и поддерживает различные среды JS путем компиляции TypeScript в совместимый JavaScript.

2. TypeScript против JavaScript

Машинопись JavaScript
Система типов Статическая типизация с проверкой типов во время компиляции. Типы могут быть указаны для переменных, параметров функций и возвращаемых значений. Динамическая типизация с проверкой типов во время выполнения, которая может привести к ошибкам времени выполнения, связанным с типами.
Тип аннотаций Поддерживает аннотации типов для явного определения типов. Например, пусть name: string = "Алиса"; Нет аннотаций типа. Типы определяются во время выполнения.
Подборка Требуется компиляция в JavaScript. Компилятор TypeScript проверяет наличие ошибок типа и генерирует эквивалентный код JavaScript. Запускается непосредственно в браузерах или Node.js без этапа компиляции.
Объектно-ориентированное программирование Более широкие возможности ООП, такие как классы, интерфейсы, абстрактные классы и модификаторы доступа. Базовые функции ООП с наследованием на основе прототипов.
Расширенные функции Включает все функции ES6 и ES7, а также дополнительные функции, такие как дженерики, перечисления и декораторы. Поддерживает ES6 и более поздние стандарты, но не имеет некоторых расширенных функций TypeScript.

3. Основные типы данных в TypeScript

  • Логическое значение: представляет истинные или ложные значения.
  • Число: представляет как целые числа, так и числа с плавающей запятой.
  • Строка: представляет текстовые данные с использованием одинарных или двойных кавычек.
  • Array: представляет коллекцию значений указанного типа с использованием type[] или Array.
  • Кортеж: представляет массив с фиксированным количеством элементов указанных типов.
  • Enum: представляет набор именованных констант.
  • Любое: представляет любой тип значения. Не обеспечивает проверку типа.
  • Void: представляет отсутствие значения, обычно используется в качестве возвращаемого типа функций, которые не возвращают значение.
  • Null и Undefine: обозначают отсутствие значения и неинициализированное состояние соответственно.
  • Никогда: представляет значения, которые никогда не встречаются, например функции, которые выдают ошибки или выполняются бесконечно.
  • Объект: представляет непримитивные типы.

4. Что такое дженерики в TypeScript? Как они используются?

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

Пример:

function identity(arg: T): T {
  return arg;
}

const numberIdentity = identity(42);
const stringIdentity = identity("Hello");

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

5. Разница между неизвестным и любым в TypeScript

  • любой тип: представляет любой тип значения и обходит все проверки типов. Ему может быть присвоено любое значение без проверки типа.
  • неизвестный тип: представляет неизвестный тип. Значения неизвестного типа необходимо проверять перед их использованием, что обеспечивает более безопасный способ обработки значений, тип которых неизвестен.
let anyVar: any;
let unknownVar: unknown;

anyVar = 5;
anyVar.toUpperCase(); // No compile-time error, but might cause runtime error

unknownVar = "Hello";
if (typeof unknownVar === "string") {
  unknownVar.toUpperCase(); // Type check ensures safety
}

6. Разница между модификатором readonly и ключевым словом const

  • Модификатор только для чтения: используется для свойств объекта, чтобы сделать их неизменяемыми после инициализации.
  • Ключевое слово const: используется для объявления переменных с неизменяемыми ссылками. Свойства объекта по-прежнему можно изменять.
const obj = { name: "John" };
obj.name = "Doe"; // Allowed

interface User {
  readonly id: number;
  name: string;
}

const user: User = { id: 1, name: "John" };
user.name = "Doe"; // Allowed
user.id = 2; // Error, `id` is readonly

7. Декораторы в TypeScript

Декораторы — это специальная функция TypeScript, которая позволяет добавлять метаданные или изменять классы, методы, свойства или параметры.

Типы:

  • Декораторы классов: применяются к конструкторам классов для изменения поведения класса или добавления метаданных.
  • Декораторы методов: применяются к методам для изменения их поведения или добавления метаданных.
  • Декораторы аксессуаров: применяются для получения или установки аксессоров для изменения их поведения.
  • Декораторы свойств: применяются к свойствам класса для добавления метаданных или изменения их поведения.
  • Декораторы параметров: применяются к параметрам метода для добавления метаданных.

Примеры:

  • Декоратор класса:
function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

@sealed
class Greeter {
  greeting: string;
  constructor(message: string) {
    this.greeting = message;
  }

  greet() {
    return `Hello, ${this.greeting}`;
  }
}

  • Декоратор метода:
function logMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`Method ${propertyName} called with args: ${JSON.stringify(args)}`);
    return originalMethod.apply(this, args);
  };
}

class Calculator {
  @logMethod
  add(a: number, b: number): number {
    return a   b;
  }
}

Использование:

Декораторы включаются, если для экспериментальных декораторов установлено значение true в tsconfig.json.

8. Разница между интерфейсом и типом

интерфейс и тип используются для определения типов объектов, но у них есть некоторые различия:

интерфейс тип
Основное использование Определяет форму объектов, включая свойства и методы. Определяет примитивные типы, типы объектов, типы объединения, типы пересечений и т. д.
Расширение Поддерживает объединение объявлений. Несколько объявлений одного и того же интерфейса автоматически объединяются. Не поддерживает объединение объявлений.
Типы объединений и пересечений Не поддерживается. Поддерживает союз (`
Псевдонимы примитивных типов Не поддерживается. Поддерживает псевдонимы примитивных типов.
Сопоставленные типы Не поддерживается. Поддерживает сопоставленные типы.
Реализация класса Поддерживает реализацию класса с использованием инструментов. Не поддерживает прямую реализацию класса.

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

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/jessie_chen_4d333540e0c71/interview-8-common-typescript interview-questions-4jki?1, если есть какие-либо нарушения, пожалуйста, свяжитесь с исследованием[email protected], чтобы Delete It.
Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3