492 просмотра
От 19 июня 2023

TypeScript - то, что могут спросить на собеседовании

1. Что такое TypeScript?

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

2. Зачем нужны .d.ts файлы?

/* .d.ts */ declare class Vector { readonly x: number; readonly y: number; static readonly zero: Vector; constructor(x: number, y: number); add(vector: Vector): Vector; } .d.ts файлы - это файлы декларации типов. Они содержат описание типов без реализации. Например, сигнатуры функций без тела, название и тип глобальных переменных без значений. В основном файлы декларации типов нужны для написания библиотек или при их использовании.

3. Что такое .map-файлы?

Файлы с расширением .map хранят карты кода (source map), которые содержат данные о соответствии кода, написанного на TypeScript, JavaScript-коду, созданному на его основе. С этим файлами могут работать многие отладчики (например, Visual Studio и инструменты разработчика Chrome). Это позволяет в ходе отладки работать с исходным кодом программ на TypeScript, а не с их JS-эквивалентами.

4. Что такое декораторы?

class CRUD { @cache get() {} post() {} @log delete() {} put() {} } Декораторы используются для расширения поведения функций. Самые распространённые примеры - добавление декоратором возможности логирования или кэширования функции.

5. Есть ли в TypeScript перегрузка функций?

class Foo { myMethod(a: string); myMethod(a: number); myMethod(a: number, b: string); myMethod(a: any, b ? : string) { alert(a.toString()); } } TypeScript поддерживает перегрузку функций, но её реализация отличается от той, которую можно видеть в других языках. А именно, описывается лишь одна функция и некоторое количество её объявлений с разными параметрами. Когда такой код компилируется в JavaScript, в нём остаётся лишь одна функция. Этот механизм работает благодаря тому, что JS-функции можно вызывать с любым количеством параметров.

6. В чем разница между interface и type?

interface X { a: number b: string } type X = { a: number b: string }; В ряде случаев они взаимозаменяемы. Однако, различия присутствуют: - с типами можно использовать пересечение и объединение - интерфейс можно расширять, строя цепочку наследований - интерфейс может быть использован для описания класса - интерфейс может быть использован для описания функции - в случае, если в одной области видимости объявлено несколько одноимённых интерфейсов, они будут объединены в один - если в нескольких одноимённых интерфейсах будут описаны одноимённые методы с разными сигнатурами, они будут расценены, как описание перегрузки. В целом, можно сказать, что ключевое слово type больше подходит для типизации примитивных значений или объектных значений, не являющихся звеньями сложной цепочки. interface же необходим и удобен при осознанном построении объектно-ориентированной архитектуры.

7. Что такое Nullish Coalescing (оператор ??)?

Nullish Coalescing (оператор ??) помогает проверить, является ли переменная null или undefined. С оператором ?? вместо длинной проверки: message = undefined; getMessage() { if (this.message !== null && this.message !== undefined) { return "default message"; } return this.message; } можно написать так: message = undefined; getMessage() { return this.message ?? 'Default message'; }

8. Как реализовать const в классе?

Поддержи проект и получи доступ ко всему контенту всего за 290

9. Что такое пространства имён?

Поддержи проект и получи доступ ко всему контенту всего за 290

10. Что такое предохранители типов?

Поддержи проект и получи доступ ко всему контенту всего за 290

11. Что такое Generics?

Поддержи проект и получи доступ ко всему контенту всего за 290

12. Зачем нужен keyof?

Поддержи проект и получи доступ ко всему контенту всего за 290

13. Что такое Partial<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

14. Что такое Required<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

15. Что такое Pick<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

16. Что такое Omit<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

17. Что такое Exclude<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

18. Что такое Extract<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

19. Что такое NonNullable<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

20. Что такое Parameters<>?

Поддержи проект и получи доступ ко всему контенту всего за 290

21. Что такое ReturnType<>?

Поддержи проект и получи доступ ко всему контенту всего за 290
Хочешь стать частью сообщества Девстанции?
Вступай в наш чат в Telegram

Также в этой категории

Викторина
  15 вопросов

Самая типизированная викторина

Викторина по вопросам о TypeScript

82 просмотра
От 9 октября 2023

Вам может быть интересно

Шпаргалка
  58 вопросов

60 вопросов для собеседования по JavaScript

Вопросы для собеседования JavaScript-разработчика

930 просмотров
От 16 февраля
Шпаргалка
  25 вопросов

Шпаргалка по вопросам о React.js

Вопросы для собеседования React.js-разработчика

439 просмотров
От 30 мая 2023
Викторина
  21 вопрос

Вопросы от пьяного интервьюера

Викторина с самыми странными вопросами

108 просмотров
От 9 октября 2023
Викторина
  19 вопросов

Про прототипы: __proto__, prototype

Викторина по вопросам о прототипах в JavaScript

58 просмотров
От 9 октября 2023
Шпаргалка
  24 вопроса

Полезные хуки на React.js

Сборник пользовательских хуков на React.js

289 просмотров
От 17 февраля
Викторина
  21 вопрос

Промисы, async/await и Event Loop

Вопросы про Promise API, async/await и цикл событий

188 просмотров
От 7 февраля

Топ тредов

Gravatar for 9tokio
Tokio:
то что раньше было бесплатным теперь платное - вот это я понимаю

Последнее сообщение:
Логотип Девстанции
Девстанция:
Спасибо за поддержку проекта :) Повышение качества контента - один из важнейших приоритетов. Этому м...
3 сообщения
212 просмотров

Логотип Девстанции
Девстанция:
Поиск людей для совместной разработки IT-стартапов

Последнее сообщение:
В этом треде пока нет сообщений
0 сообщений
107 просмотров

Логотип Девстанции
Девстанция:
Какой язык программирования выбрать в качестве первого?

Последнее сообщение:
Gravatar for 2kokke
Kokke:
Python или JS - универсально. Но по уму надо бы с чего-то строгого начинать и достаточно низкоуровне...
1 сообщение
139 просмотров

Все категории