github: https://github.com/Jessie-jzn
сайт: https://www.jessieontheroad.com/
1. Статическая проверка типов
Основным преимуществом TypeScript является статическая проверка типов, которая помогает выявлять распространенные ошибки на этапе компиляции, а не во время выполнения. Это повышает надежность и стабильность кода.
2. Расширенные возможности редактирования кода
Система типов TypeScript обеспечивает более точное завершение кода, рефакторинг, навигацию и функции документирования в редакторах, что значительно повышает эффективность разработки.
3. Улучшение удобства сопровождения кода
Объявления типов упрощают понимание целей и структуры кода, что особенно полезно в средах групповой разработки.
4. Расширенные языковые функции
TypeScript поддерживает расширенные функции, отсутствующие в JavaScript, такие как интерфейсы, перечисления и дженерики, что облегчает разработку более структурированного и масштабируемого кода.
5. Улучшенная поддержка инструментов
TypeScript предлагает различные параметры компилятора для оптимизации сгенерированного кода JavaScript и поддерживает различные среды JS путем компиляции TypeScript в совместимый JavaScript.
Машинопись | JavaScript | |
---|---|---|
Система типов | Статическая типизация с проверкой типов во время компиляции. Типы могут быть указаны для переменных, параметров функций и возвращаемых значений. | Динамическая типизация с проверкой типов во время выполнения, которая может привести к ошибкам времени выполнения, связанным с типами. |
Тип аннотаций | Поддерживает аннотации типов для явного определения типов. Например, пусть name: string = "Алиса"; | Нет аннотаций типа. Типы определяются во время выполнения. |
Подборка | Требуется компиляция в JavaScript. Компилятор TypeScript проверяет наличие ошибок типа и генерирует эквивалентный код JavaScript. | Запускается непосредственно в браузерах или Node.js без этапа компиляции. |
Объектно-ориентированное программирование | Более широкие возможности ООП, такие как классы, интерфейсы, абстрактные классы и модификаторы доступа. | Базовые функции ООП с наследованием на основе прототипов. |
Расширенные функции | Включает все функции ES6 и ES7, а также дополнительные функции, такие как дженерики, перечисления и декораторы. | Поддерживает ES6 и более поздние стандарты, но не имеет некоторых расширенных функций TypeScript. |
Обобщенные типы позволяют функциям, классам и интерфейсам работать с любым типом, сохраняя при этом безопасность типов.
Пример:
function identity(arg: T): T { return arg; } const numberIdentity = identity (42); const stringIdentity = identity ("Hello");
В этом примере функция идентификации использует общий
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 }
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
Декораторы — это специальная функция 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.
интерфейс и тип используются для определения типов объектов, но у них есть некоторые различия:
интерфейс | тип | |
---|---|---|
Основное использование | Определяет форму объектов, включая свойства и методы. | Определяет примитивные типы, типы объектов, типы объединения, типы пересечений и т. д. |
Расширение | Поддерживает объединение объявлений. Несколько объявлений одного и того же интерфейса автоматически объединяются. | Не поддерживает объединение объявлений. |
Типы объединений и пересечений | Не поддерживается. | Поддерживает союз (` |
Псевдонимы примитивных типов | Не поддерживается. | Поддерживает псевдонимы примитивных типов. |
Сопоставленные типы | Не поддерживается. | Поддерживает сопоставленные типы. |
Реализация класса | Поддерживает реализацию класса с использованием инструментов. | Не поддерживает прямую реализацию класса. |
Эти вопросы и ответы должны помочь подготовиться к собеседованиям по TypeScript, поскольку они охватывают фундаментальные концепции и их практическое использование.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3