Вопросы по TypeScript
Что такое TypeScript и зачем использовать его вместо JavaScript?
- это надмножество JS, которое добавляет в него возможность явного статического назначения типов. (этот язык проект Microsoft)
- Одним из серьёзных преимуществ TS перед JS является возможность, которая позволяет, прямо в процессе ввода кода, выявлять ошибки
Что такое обобщения(Generic) и зачем они нужны?
- Это инструмент, который позволяет писать на TypeScript функции и классы, способные работать с различными типами данных, сохраняя работоспособность проверки типов
Поддерживает ли TypeScript все принципы ООП?
- Да, Есть 4 принципа: - Инкапсуляция - размещение в оболочке(изоляция), закрытие чего-либо инородного с целью исключения влияния на окружающее - Наследование - позволяет использовать повторно функциональность и свойства существующего объекта в новом - Абстракция - означает, что для каждого объекта мы задаём минимальное количество методов, полей и описаний, которые позволят нам решить задачу. - Полиморфизм - означает, что функция или метод может работать с разными типами
Что представляют собой .map-файлы в TypeScript?
Это файлы карты, которые позволяют инструментам сопоставлять выпущенный код JavaScript и исходные файлы TypeScript, которые его создали.
Что такое геттеры и сеттеры в TypeScript?
- TypeScript поддерживает геттеры и сеттеры, которые позволяют управлять доступом к элементам класса.- Они дают разработчику средства контроля над чтением и записью свойств объектов. Для объектов можно использовать Object.defineProperty для определения геттеров и сеттеров https://www.dropbox.com/s/5lpp2l246j2ow98/ObjectSettersGetters.png?dl=0 и это уже не связанно с TypeScript Указание set и get в литералах(константах) - https://www.dropbox.com/s/c3m9c2e8zojxflj/ObjectSettersGettrersInConst.png?dl=0
Можно ли использовать TypeScript в серверной разработке, и если да — то как?
- Да, лучший способ сделать это - установить nodemon и ts-node в зависимости разработки и добавить 2 срипта: - start для развертывания на сервере "ts-node ./src/app.ts" - dev для локального запуска с авто-обновлением сервера при обновлении файлов: "nodemon ./src/app.ts"
Расскажите об основных компонентах TypeScript
- Язык. Синтаксис который позволяет писать на TypeScript
- Компилятор. Он выполняет преобразование TypeScript-кода в JavaScript-код и сообщает об ошибках типов если они имеются. Еще он позволяет объединять несколько TypeScript-файлов в один выходной JS-файл и умеет создавать карты кода
- Вспомогательные инструменты. Это среды разработки такие как VS Code, которые могут быстро запускать TS-код
Что такое перегрузка функции и поддерживает ли её TypeScript?
Это объявление функции с тем же именем несколько раз. Чтобы компилятор мог отличать «перегруженные» функции между собой, у них должны быть разные параметры- Да, TS поддерживает перегрузку, но не совсем так как в других языках- Перегрузка может быть полезна для предопределения типа возвращаемого значения, в зависимости от типов передаваемых в функции аргументов- https://www.dropbox.com/s/5ysnsui9ixto663/functionOverloadTS.png?dl=0 пример перегрузки в TypeScript
Чем различаются ключевые слова interface и type в TypeScript?
- Интерфейсом можно описать только тип объекта, а типом можно описать примитивные значения
- Но у интерфейса есть преимущества: Интерфейс может быть использован в выражении extends или implements Интерфейс может иметь несколько объединённых объявлений«слияние объявлений» - означает, что компилятор может объединять объявления, объявленные с одним и тем же именем, в одно определение
Расскажите о том, когда в TypeScript используют ключевое слово declare?
- Ключевое слово declare используется в TypeScript для объявления переменных, источником которых может служить некий файл, не являющийся TypeScript-файлом.
Что такое внешние объявления переменных в TypeScript и когда их нужно использовать?
- Это механизм, который позволяет сообщать компилятору TypeScript о том, что некий исходный код существует где-то за пределами текущего файла- Внешние объявления помогают интегрировать в TS-программы сторонние JavaScript-библиотеки.- Эти объявления делают в файле объявления типов с расширением .d.ts
Можно ли автоматически генерировать файлы объявлений TypeScript из JS-библиотек?
- Microsoft/dts-gen — официальное средство, используемое Microsoft как отправная точка при создании объявлений типов- Установить опцию компилятора на true в файле tsconfig.json"compilerOptions": { "declaration": true }
Какая польза от файла tsconfig.json?
Файл tsconfig.json определяет корневые файлы и параметры компилятора, необходимые для компиляции проекта.
Какое ключевое слово используется для наследования в TypeScript?
- extends - это ключевое слово, которое вам следует искать
Можно ли в TypeScript унаследовать от класса?
- Да, через ключевое слово extends
Что такое пространство имен в TypeScript?
- Это просто способ логически сгруппировать связанные классы или интерфейсы в оболочке
Что такое декораторы в TypeScript?
- Декораторы - это просто функции, которые изменяют класс, свойство, метод или параметр метода.
Как объявить декоратора?
- Синтаксис - это символ «@», за которым следует функция- @readonly class foo {…}- На текущий момент декораторы являются экпериментальной функциональностью языка TypeScript, поэтому при компиляции следует указывать параметр experimentalDecorators
Для чего используется ключевое слово as в TypeScript?
as - это дополнительный синтаксис для утверждения типа в TypeScript
Когда используется ключевое слово «unknown»?
Когда вы не хотите использовать ключевое слово any и/или заранее не знаете точный тип, но хотите назначить его позже.
Для чего нужен тип «Omit»?
- Это новый тип, в котором можно указать свойства, которые будут исключены из исходного типа
type Person = { name: string; age: number; location: string; }
type QuantumPerson = Omit<Person, 'location'> // Аналогично следующей строке
QuantumPerson = { name: string; age: number; }
Что делает объект instanceof в TS?
Оператор instanceof используется для проверки, является ли объект объектом указанного класса
Чем Отличаются Друг От Друга Типы Объединения(«|») И Пересечения («&»)?
- Объединение, позволяет создавать из множества существующих типов данных логическое условие, по которому данные могут принадлежать к одному из указанных типов
- Пересечение, позволяет рассматривать множество типов данных, как один
Что делает тип Record?
- Создает тип объекта, ключами свойств которого являются Keys, а значениями свойств — Type. Эту утилиту можно использовать для отображения свойств одного типа на другой тип- https://www.dropbox.com/s/8dkakvsdkqvtv7n/RecordTypeScript.png?dl=0 пример
Как быстро сделать все свойства в интерфейсе опциональными?
- используйте утилитный тип «Partial». Он создает тип со всеми свойствами Type, установленными как необязательные-
Partial<myType>
Как сделать интерфейс не ограниченным по свойствам
https://www.dropbox.com/s/y7mckthdz0oc4d3/UnlimitedNumberOfPropertiesTS.png?dl=0
Что такое перечесления(enums) в TypeScript?
Перечисления — это функция, которая упрощает работу с именованными наборами констант. По умолчанию перечисление основано на числах, начиная с нуля, и каждому параметру присваивается приращение на единицу. Это полезно, когда значение не важно- Пример - https://www.dropbox.com/s/l88ttuf0v2s5usz/EnumInTypeScript.png?dl=0
Объяснить значение кортежей(tuples)
В TS- Tuple (Кортеж данных) - это последовательность значений- Особености: - Tuple объявляется с помощью TypeScript с определенным количеством элементов и указывает тип для каждого элементаlet myTuple: [dataType1, dataType2, dataTypeN] = [value1, value2, valueN] - Начальным значением должен быть массив с тем же количеством элементов, что и в описании типа
Проблемы?
Пишите в Telegram или ВКонтакте, а также подписывайтесь на наши новости