Решайте задачи на JavaScript0 из 169 задач решено
Перейти к задачам
2233 просмотра
От 4 июня

Ответы на вопросы с собеседований по 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 в классе?

В TypeScript при объявлении свойств классов нельзя использовать ключевое слово const. Начиная со второй версии TS, можно использовать модификатор readonly, позволяющий объявлять свойства класса, предназначенные только для чтения.

9

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

Пространства имен в TypeScript — это способ организации и группировки связанного кода. Они помогают избежать столкновения имен и способствуют модульности, инкапсулируя связанный код. Пространства имен могут содержать классы, интерфейсы, функции, переменные и другие пространства имен. Определение пространств имен Чтобы определить пространство имен, используйте ключевое слово namespace, за которым следует имя пространства имен. Затем можно добавить любой связанный код внутри фигурных скобок. namespace MyNamespace { export class MyClass { constructor(public value: number) {} displayValue() { console.log(`The value is: ${this.value}`); } } } В этом примере определяем пространство имен MyNamespace и добавляем в него класс MyClass. Учтите, что ключевое слово export используется, чтобы сделать класс доступным за пределами пространства имен. Применение пространств имен Чтобы применить код из пространства имен, можно либо использовать полностью определенное имя, либо импортировать код с помощью импорта пространства имен. // Использование полностью определенного имени const instance1 = new MyNamespace.MyClass(5); instance1.displayValue(); // Вывод: Значение - 5 // Использование импорта пространства имен import MyClass = MyNamespace.MyClass; const instance2 = new MyClass(10); instance2.displayValue(); // Вывод: Значение - 10 Этот пример демонстрирует два способа использования класса MyClass из пространства имен MyNamespace. В первом случае используем полностью определенное имя MyNamespace.MyClass. Во втором — применяем оператор импорта пространства имен, чтобы импортировать класс MyClass и использовать его с более коротким именем. Вложенные пространства имен Пространства имен могут быть вложенными для создания иерархии и дальнейшей организации кода. namespace OuterNamespace { export namespace InnerNamespace { export class MyClass { constructor(public value: number) {} displayValue() { console.log(`The value is: ${this.value}`); } } } } // Использование полностью определенного имени const instance = new OuterNamespace.InnerNamespace.MyClass(15); instance.displayValue(); // Вывод: Значение - 15 В этом примере определяем вложенное пространство имен InnerNamespace внутри OuterNamespace. Затем определяем класс MyClass внутри вложенного пространства имен и используем его с полным именем OuterNamespace.InnerNamespace.MyClass.

Логотип ДевстанцииАвторизуйтесь, чтобы просматривать следующий контент
11

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
12

Что такое Generics?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
13

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
14

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
15

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
16

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
17

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
18

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
19

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
20

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
21

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
22

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

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
Хотите стать частью сообщества Девстанции?
Вступайте в наш чат в Telegram

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

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

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

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

356 просмотров
От 9 октября 2023

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

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

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

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

868 просмотров
От 7 февраля
Вопросник
  15 вопросов

Вопросы с собеседований по Vue.js

Ответы на вопросы для собеседования Vue.js

1178 просмотров
От 4 июня
Викторина
  19 вопросов

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

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

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

75 вопросов с собеседований по Angular

Подборка ответов на вопросы с собеседований по Angular

695 просмотров
От 28 июня
Викторина
  33 вопроса

Подковыристые основы JavaScript

Типичные и не очень вопросы с собеседования по JavaScript

687 просмотров
От 7 февраля
Вопросник
  24 вопроса

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

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

1269 просмотров
От 17 февраля

Топ тредов

Gravatar for 1233freddypopa
freddypopa
: Добавить чекбокс, который отвечает за показ ранее тронутых задач (черновик)

Последнее сообщение:
: Отличная идея! Возьмём её на заметку!
1 сообщение
72 просмотра

: Предложите идею и получите спонсорский доступ на месяц

Последнее сообщение:
Gravatar for 1236borisops
Borisops
: Добавить темную тему) что бы можно было посмотреть сложность алгоритма и добавить тэги.
10 сообщений
307 просмотров

Gravatar for 815unicozz
unicozz
: Задача в JS под названием "Соревнование" содержит ошибку

Последнее сообщение:
: Привет! В примерах вызова функции действительно была опечатка, исправили. Однако, должен получиться...
2 сообщения
120 просмотров

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