Есть ли дополнительные функции у TypeScript?
Типизация функций
Да. Кроме типов, TypeScript добавляет несколько возможностей, которых нет в JavaScript, а также помогает использовать новые возможности JS раньше.
Возможности только TypeScript
- enum — именованные константы с объектом в рантайме.
- Параметры-свойства в конструкторе —
constructor(private name: string)сразу создаёт поле. - Модификаторы доступа
private,protected,readonly,abstract. - Декораторы (экспериментальная версия; стандартные теперь есть и в JS).
- namespace — пространства имён.
- Перегрузки функций — несколько сигнатур одной функции.
function format(value: number): string;
function format(value: Date): string;
function format(value: number | Date) {
return value instanceof Date ? value.toISOString() : value.toFixed(2);
}Транспиляция
TypeScript умеет компилировать новый синтаксис JS (?., ??, классы) в старые версии через target, хотя сейчас эту задачу часто отдают бандлеру.
Нюанс
Многие из этих возможностей генерируют код (enum, параметры-свойства, namespace) и не поддерживаются в режиме «только удаление типов» (erasableSyntaxOnly).
Коротко для собеседования
Да: enum, параметры-свойства, модификаторы доступа, перегрузки, namespace и декораторы; часть из них генерирует код в рантайме.
Подробнее: TypeScript Handbook