Содержание[Скрывать][Показывать]
- 1. Что такое TypeScript и чем он отличается от JavaScript?
- 2. Каковы некоторые примечательные особенности TypeScript?
- 3. Какие преимущества дает использование TypeScript?
- 4. Каковы некоторые недостатки использования TypeScript?
- 5. Что такое компоненты TypeScript?
- 6. Можете ли вы объяснить интерфейсы в TypeScript?
- 7. Что такое переменные в TypeScript и как они объявляются различными способами?
- 8. Как можно использовать подмножество интерфейса для создания нового типа?
- 9. Что вы подразумеваете под «любыми» типами и когда их следует использовать?
- 10. Почему TypeScript является языком с необязательным статически типизированным синтаксисом?
- 11. Что в TypeScript означают модули?
- 12. Как работают «перечисления» в TypeScript?
- 13. Чем внутренний модуль отличается от внешнего модуля?
- 14. Что означает анонимная функция TypeScript?
- 15. Что такое пространство имен в TypeScript и как его объявить?
- 16. Какие модификаторы доступа поддерживает TypeScript?
- 17. Разрешает ли TypeScript перегрузку функций?
- 18. Как TypeScript допускает необязательные аргументы в функциях?
- 19. Чем отличаются друг от друга var, let и const?
- 20. В TypeScript описать декораторы?
- 21. Что означают миксины в TypeScript?
- 22. Что такое псевдонимы типов в TypeScript?
- 23. Что означает термин «переменная области»?
- 24. Для чего именно используется noImplicitAny?
- 25. Чем отличаются друг от друга типы объединения и пересечения?
- 26. Как вы определяете ключевое слово объявления TypeScript?
- 27. Что такое дженерики в TypeScript?
- 28. Что означает JSX в TypeScript?
- 29. Что такое TypeScript Ambient и когда мне следует их использовать?
- 30. Что вы подразумеваете под абстрактным классом в TypeScript?
- 31. Что такое файл карты TypeScript?
- 32. Что такое утверждения типа в TypeScript?
- Заключение
Microsoft разработала и продолжает поддерживать язык программирования TypeScript. С добавлением статической типизации в качестве опции это синтаксический надмножество JavaScript.
Язык разработки крупномасштабных приложений TypeScript компилирует JavaScript. Поскольку TypeScript является надмножеством JavaScript, программы, написанные на JavaScript, также допустимы в TypeScript.
Вот исчерпывающий список наиболее типичных вопросов и ответов на интервью с разработчиками TypeScript, если вы их посещаете.
1. Что такое TypeScript и чем он отличается от JavaScript?
Расширенный набор JavaScript, TypeScript компилируется в стандартный JavaScript. С концептуальной точки зрения TypeScript и JavaScript похожи на SASS и CSS.
Другими словами, TypeScript — это JavaScript ES6 с некоторыми дополнительными возможностями. JavaScript — это язык сценариев, более похожий на Python, тогда как TypeScript — это объектно-ориентированный язык со статической типизацией, сравнимый с Java и C#.
Классы и интерфейсы — все это часть объектно-ориентированного дизайна TypeScript, а вывод типов — один из многих инструментов, доступных благодаря его статической типизации.
JavaScript записывается в файл с расширением .js, тогда как TypeScript записывается в файл с расширением .ts.
В отличие от JavaScript, код TypeScript нельзя запустить напрямую в браузере или на любой другой платформе, и браузеры его не понимают. Затем целевая платформа запустит простой JavaScript, созданный из файлов .ts с помощью транспилятора TypeScript.
2. Каковы некоторые примечательные особенности TypeScript?
- Статическая типизация — это функция TypeScript, которая помогает проверять типы во время компиляции. Таким образом, даже не выполняя скрипт, вы можете обнаружить ошибки в коде по мере его написания.
- DOM можно изменить с помощью TypeScript для добавления или удаления элементов.
- В любой операционной системе, включая Windows, macOS и Linux, может быть установлен компилятор TypeScript.
- Классы, интерфейсы и модули — вот некоторые из функций, предлагаемых TypeScript. Таким образом, он может создавать объектно-ориентированный код для разработки как на стороне клиента, так и на стороне сервера.
- Большинство функций ECMAScript 2015 (ES 6, 7) уже включены в TypeScript, включая классы, интерфейсы, стрелочные функции и т. д.
- Если вы используете динамическую типизацию JavaScript, TypeScript также поддерживает необязательную статическую типизацию.
3. Какие преимущества дает использование TypeScript?
- Любой движок JavaScript или браузер может выполнять TypeScript, поскольку он быстрый, простой в освоении и быстро работает.
- Он имеет тот же синтаксис и семантику, что и JavaScript.
- Это облегчает более быстрое написание внешнего кода бэкэнд-разработчиками.
- Он включает в себя возможности ES6 и ES7, которые могут функция в JavaScript Двигатели ES5, такие как Node.js.
- Существующие библиотеки JavaScript, такие как Jquery, D3.js и т. д., поддерживаются через файл определения с расширением .d.ts.
- Сценарий JavaScript, который уже существует, может вызывать код TypeScript. Он также легко интегрируется с текущими платформами и библиотеками JavaScript.
4. Каковы некоторые недостатки использования TypeScript?
- Кодирование с помощью TypeScript требует длительного процесса компиляции.
- Он не поддерживает абстрактные классы.
- Качество файлов определения типов является проблемой.
- Любая сторонняя библиотека должна иметь файл определения, чтобы ее можно было использовать.
- Шаг компиляции необходим для преобразования TypeScript в JavaScript, если мы хотим запустить приложение TypeScript в браузере.
- JavaScript используется веб-разработчиками уже много лет, и TypeScript не предлагает ничего нового.
5. Что такое компоненты TypeScript?
В TypeScript есть три основные категории компонентов, в том числе:
- Язык: содержит аннотации для типа, ключевых слов и синтаксиса.
- Компилятор TypeScript: Инструкции TypeScript переводятся в JavaScript этим компилятором (tsc).
- Языковая служба TypeScript: Языковая служба предлагает приложения, похожие на редакторы, в качестве второго уровня поверх основного процесса компиляции. Стандартный набор общих операций редактирования поддерживается языковой службой.
6. Можете ли вы объяснить интерфейсы в TypeScript?
TypeScript использует интерфейсы для указания синтаксиса сущностей. Другими словами, формы данных, такие как объекты или массивы элементов, могут быть описаны с помощью интерфейсов. Ключевое слово интерфейса, имя интерфейса и его определение используются для объявления интерфейсов. Давайте рассмотрим базовый интерфейс пользовательского объекта.
Затем тип переменной можно установить с помощью интерфейса (аналогично тому, как вы назначаете примитивные типы переменной). Тогда свойствам интерфейса будет соответствовать переменная типа User.
Ваш проект TypeScript выигрывает от интерфейсов, поскольку они обеспечивают единообразие. Кроме того, интерфейсы улучшают инструменты вашего проекта, расширяя возможности автозаполнения IDE и гарантируя передачу правильных значений конструкторам и методам.
7. Что такое переменные в TypeScript и как они объявляются различными способами?
Переменная — это специально выделенная область памяти, используемая для хранения значений. Двоеточие (:) ставится после имени переменной, за которым следует тип при объявлении переменной в TypeScript. Мы объявляем переменные с помощью ключевого слова var, как и в JavaScript.
При объявлении переменной в Typescript необходимо соблюдать определенные рекомендации:
- Имя не может начинаться с цифры.
- Имя переменной должно содержать буквы или цифры.
- Символ доллара ($) и подчеркивание (_) — единственные специальные символы, которые разрешены в этом поле.
8. Как можно использовать подмножество интерфейса для создания нового типа?
Предоставив существующий тип или интерфейс и выбрав ключи, которые нужно исключить из нового типа, вы можете создать новый тип в TypeScript, используя утилиту опустить тип.
В следующем примере показано, как создать новый тип с именем UserPreview, основанный на пользовательском интерфейсе, но исключающий свойство электронной почты.
9. Что вы подразумеваете под «любыми» типами и когда их следует использовать?
Иногда вам нужно сохранить значение в переменной, но вы заранее не уверены в типе переменной. Например, значение может быть получено из пользовательского ввода или запроса API. Вы можете присвоить любой тип значения типу переменной, используя тип «любой».
Когда тип переменной не указан явно и компилятор не может определить его из контекста, TypeScript считает, что переменная имеет тип any.
10. Почему TypeScript является языком с необязательным статически типизированным синтаксисом?
Можно указать компилятору игнорировать тип переменной в TypeScript, поскольку он необязательно имеет статический тип. Любой тип данных может быть использован для присвоения переменной любого значения. При компиляции TypeScript не обеспечивает проверку ошибок.
11. Что в TypeScript означают модули?
Эффективно группировать релевантные переменные, функции, классы, интерфейсы и т. д. с помощью модулей. Его можно использовать, но не в глобальной области видимости, а только внутри своей собственной области видимости.
По сути, определенные в модуле переменные, функции, классы и интерфейсы не могут быть доступны напрямую извне модуля.
Ключевое слово export можно использовать для создания модуля, а ключевое слово import можно использовать для включения модуля в другой модуль.
12. Как работают «перечисления» в TypeScript?
Метод определения набора именованных констант заключается в использовании перечислений или перечисляемых типов. Эти структуры данных имеют фиксированную длину и набор фиксированных значений.
При представлении набора альтернатив для заданного значения в TypeScript перечисления часто используются для описания возможностей с использованием набора пар ключ/значение.
Давайте посмотрим на иллюстрацию перечисления, используемого для предоставления различных типов пользователей.
Перечисления внутренне преобразуются в обычные объекты JavaScript с помощью TypeScript после компиляции. Поэтому использование перечислений предпочтительнее использования нескольких отдельных константных переменных.
Ваш код безопасен для типов и его легче понять из-за группировки, которую обеспечивают перечисления.
13. Чем внутренний модуль отличается от внешнего модуля?
Внутренний модуль:
- Внутренние модули были особенностью предыдущей версии Typescript.
- Имя и тело внутренних модулей определяются с помощью ModuleDeclarations.
- Это члены других модулей, которые являются локальными или экспортируемыми.
- Классы, интерфейсы, функции и переменные сгруппированы во внутренних модулях, которые можно экспортировать в другой модуль.
Внешний модуль:
- В самой последней версии внешние модули называются модулями.
- Для их создания используется отдельный исходный файл, известный как внешний модуль, и каждый из них имеет как минимум одну декларацию импорта или экспорта.
- В самой последней версии внешние модули называются модулями.
- Внутренние операторы определений модулей можно скрыть с помощью внешних модулей, оставив видимыми только методы и аргументы, связанные с определенной переменной.
14. Что означает анонимная функция TypeScript?
Функции, классифицированные как анонимные, не имеют имени функции в качестве идентификатора. Эти подпрограммы динамически определяются во время выполнения. Как и обычные функции, анонимные функции могут принимать входные данные и выдавать результаты.
Анонимная функция обычно недоступна после ее создания. Переменные могут быть назначены анонимной функции.
15. Что такое пространство имен в TypeScript и как его объявить?
Пространство имен логически группирует функции. Они внутренне сохраняют устаревший код машинописного текста. Он включает в себя черты и вещи с определенными связями.
Другое название пространства имен — внутренний модуль. Интерфейсы, классы, функции и переменные могут быть включены в пространство имен, чтобы обеспечить набор связанных функций.
16. Какие модификаторы доступа поддерживает TypeScript?
Ниже приведены примеры того, как модификаторы доступа public, private и protected в TypeScript можно использовать для управления доступностью члена класса:
- Публичный — доступ доступен каждому члену класса, всем его классам-потомкам и каждому экземпляру класса.
- Защищенные — они доступны для каждого члена класса и всех его подклассов. Однако экземпляр класса не может получить доступ.
- Частный доступ к ним разрешен только членам класса.
Поскольку JavaScript удобен, если модификатор доступа не указан, он считается общедоступным.
17. Разрешает ли TypeScript перегрузку функций?
Да, перегрузка функций поддерживается TypeScript. Но сейчас это делается странно. Поэтому при перегрузке с TypeScript получается всего одна реализация с множеством сигнатур.
В то время как вторая подпись содержит параметр типа text, первая подпись имеет только один параметр типа number. Третья функция, которая включает в себя аргумент типа any, содержит реальную реализацию.
Затем реализация определяет тип предоставленного параметра и запускает отдельный раздел кода в соответствии с этим определением.
18. Как TypeScript допускает необязательные аргументы в функциях?
В отличие от JavaScript, если вы попытаетесь вызвать функцию, не указав точное количество и типы параметров, как указано в сигнатуре функции, компилятор TypeScript выдаст ошибку.
Вы можете использовать необязательные параметры, используя символ вопросительного знака ('?'), чтобы обойти эту проблему. Это показывает, что необязательные параметры могут быть обозначены добавлением «?» к тем, которые могут или не могут получить ценность.
19. Чем отличаются друг от друга var, let и const?
TypeScript предлагает три разных способа объявить переменную, каждый с предлагаемым приложением.
вар: Объявляет глобальную переменную или переменную с областью действия функции с поведением переменных JavaScript и рекомендациями по области действия. Переменные не требуют, чтобы их значения были установлены при их объявлении.
года: объявляет локальную блочную переменную. Пусть переменные не нуждаются в установке значения переменной при их объявлении. Термин «локальная переменная с областью действия блока» относится к переменной, к которой можно получить доступ только внутри блока, в котором она содержится, например, к функции, блоку if/else или циклу. Переменные let не могут быть прочитаны или записаны до их объявления, в отличие от var.
Const: объявляет значение для константы блочной области, которую нельзя изменить после ее инициализации. Константные переменные должны быть инициализированы перед объявлением. Для переменных, которые остаются постоянными в течение всего своего существования, это оптимально.
20. В TypeScript описать декораторы?
Аксессор, свойство, параметр, класс, функция или декоратор могут быть объявлены определенным образом как декораторы. Декораторы — это функции с префиксом @expression, которые будут вызываться во время выполнения с подробной информацией об оформленном объявлении.
Выражение должно вычислять функцию, чтобы декораторы работали.
Декораторы TypeScript обеспечивают декларативное добавление аннотаций и информации к текущему коду.
В нашем файле tsconfig.json или в командной строке необходимо активировать опцию компилятора ExperimentDecorators, чтобы включить экспериментальную поддержку декораторов:
21. Что означают миксины в TypeScript?
Mixins — это метод создания классов из повторно используемых частей в Javascript и смешивания частичных классов для создания более сложных полных классов.
Концепция проста: функция B принимает класс A и возвращает новый класс с добавленной функциональностью, в отличие от класса A, расширяющего класс B для получения его функциональности. Функция B в данном случае является миксином.
22. Что такое псевдонимы типов в TypeScript?
Псевдонимы типов изменяют имя типа. Псевдонимы типов, как и интерфейсы, могут использоваться для именования примитивов, объединений, кортежей и любых других типов, которые в противном случае пришлось бы определять вручную.
Псевдоним не создает новый тип; скорее, он изменяет имя существующего типа. Псевдоним примитива не очень практичен, хотя может быть полезен для документации.
Псевдонимы типов, как и интерфейсы, могут быть универсальными; все, что вам нужно сделать, это добавить параметры типа и использовать их в правой части объявления псевдонима.
23. Что означает термин «переменная области»?
JavaScript поддерживает как локальные, так и глобальные переменные области видимости. Область действия — это набор объектов, переменных и функций.
Пример объявления переменной в двух областях:
- Переменная с локальной областью действия — она служит объектом функции для использования внутри функций.
- Переменная с глобальной областью действия — этот объект окна можно использовать как внутри, так и вне функций.
24. Для чего именно используется noImplicitAny?
Обработка компилятором TypeScript неявных типов any вашего проекта изменяется с помощью свойства noImplicitAny в файле конфигурации tsconfig.json для проектов TypeScript.
Флаг noImplicitAny может иметь значение true или false, и его всегда можно изменить после инициализации. Учитывая, что каждый проект уникален, нет правильного или неправильного ответа на вопрос, каким должно быть это число.
Понимание различий между включенным и выключенным состояниями флага может помочь вам выбрать, какую настройку использовать для флага.
Компилятор не определяет тип переменной на основе того, как она используется, если для флага noImplicitAny установлено значение false (по умолчанию). Вместо этого компилятор по умолчанию задает тип any.
Однако если для параметра noImplicitAny установлено значение true, компилятор попытается определить тип и выдаст ошибку времени компиляции, если он не сможет этого сделать.
25. Чем отличаются друг от друга типы объединения и пересечения?
Вместо того, чтобы создавать новые типы с нуля, объединения и типы пересечения позволяют вам составлять и смешивать существующие типы. И объединение, и пересечение обладают отличительными качествами, которые делают их идеальными для определенных случаев использования.
Тип, который может быть одним из нескольких типов, называется типом объединения. Список типов, которые будут использоваться в новом типе, разделен символом | (вертикальная черта) символ в типах объединения.
Давайте посмотрим на иллюстрацию:
С другой стороны, пересечение определяется как тип, который объединяет множество типов в один, интегрируя все функции каждого типа для формирования нового типа. Список видов, которые будут объединены, делится на пересечения с помощью символа &.
Рассмотрим иллюстрацию:
26. Как вы определяете ключевое слово объявления TypeScript?
В библиотеках или фреймворках JavaScript нет файлов объявлений TypeScript. Однако вы должны использовать ключевое слово declare, чтобы использовать их в файле TypeScript без каких-либо ошибок компиляции.
Когда вы хотите указать переменную, которая уже может существовать где-то еще, вы используете ключевое слово declare во внешних объявлениях и методах.
27. Что такое дженерики в TypeScript?
Инструмент под названием TypeScript Generics предлагает метод создания деталей многократного использования. Вместо того, чтобы работать только с одной формой данных, он может разрабатывать компоненты, которые могут работать с целым рядом типов данных.
Кроме того, он обеспечивает безопасность типов без ущерба для эффективности или производительности. Благодаря дженерикам мы можем создавать универсальные классы, универсальные функции, универсальные методы и универсальные интерфейсы.
Универсальные коллекции — это строго типизированные коллекции, поскольку параметр типа записывается между открывающими () и закрывающими (>) скобками. Он использует переменную типа уникального типа, называемую T, которая обозначает типы.
28. Что означает JSX в TypeScript?
JSX — это законный JavaScript, который можно преобразовать из встраиваемого XML-подобного синтаксиса. Наряду с фреймворком React популярность приобрел JSX.
TypeScript поддерживает прямую компиляцию, проверку типов и встраивание JSX в JavaScript. Вы должны дать файлу расширение .tsx и активировать параметр JSX, если хотите его использовать.
29. Что такое TypeScript Ambient и когда мне следует их использовать?
Компилятор информируется о реальном исходном коде, который находится в другом месте, через окружающие объявления.
Он сломается без предварительного уведомления, если мы попытаемся использовать эти исходные коды во время выполнения, но их нет. Файлы, подобные документам, являются файлами внешних объявлений.
Если исходный код изменяется, документация должна быть обновлена, и проблемы с компилятором возникнут, если файл объявления окружения не будет изменен.
Кроме того, это позволяет нам использовать хорошо известные библиотеки JavaScript, которые уже широко используются, такие как jQuery, AngularJS, NodeJS и т. д.
30. Что вы подразумеваете под абстрактным классом в TypeScript?
Абстрактные классы определяют контракт объекта, не допуская прямого создания экземпляра объекта. Однако абстрактный класс может также предлагать информацию о реализации своего члена.
В абстрактном классе можно найти один или несколько абстрактных членов. Затем абстрактные члены суперкласса должны иметь реализацию, предоставляемую любыми классами, которые расширяют абстрактный класс.
Давайте посмотрим на пример TypeScript абстрактного класса и на то, как другой класс может его расширить. Хотя классы Car и Bike в приведенном ниже примере расширяют класс Vehicle, каждый из них реализует функцию drive() уникальным образом.
31. Что такое файл карты TypeScript?
Файл исходной карты, называемый файлом карты TypeScript, содержит данные о наших исходных файлах. Файлы исходной карты или файлы .map позволяют инструментам сопоставлять код JavaScript, который выводится, и исходные файлы TypeScript, которые его создали.
Кроме того, эти файлы могут использоваться отладчиками, что позволяет нам отлаживать файл TypeScript, а не файл JavaScript.
32. Что такое утверждения типа в TypeScript?
Хотя утверждение типа работает аналогично приведению типов в других языках, таких как C# и Java, оно не выполняет проверку типа или перестановку данных.
Хотя утверждение типа не влияет на время выполнения, приведение типов предлагает эту поддержку. Утверждения типа, с другой стороны, используются только компилятором и дают указания о том, как мы хотим, чтобы наш код проверялся.
Заключение
В заключение, мы надеемся, что эти вопросы собеседования TypeScript будут полезны для вас, будь вы разработчиком, готовящимся к собеседованию, или менеджером по найму, пытающимся найти лучшего кандидата.
Помните, что процесс найма включает в себя больше, чем просто технические знания. Чтобы гарантировать, что вы получите (или найдете подходящего кандидата) работу, прошлый опыт и социальные навыки одинаково важны.
Многие вопросы на собеседовании по TypeScript открыты и не имеют единого правильного ответа, так что имейте это в виду.
Интервьюеры заинтересованы в обосновании ваших ответов.
Всегда будьте готовы к последующим запросам, объясняющим, как вы пришли к своему ответу. Опишите свой мыслительный процесс.
Оставьте комментарий