Зміст[Сховати][Показати]
- 1. Що таке TypeScript і чим він відрізняється від JavaScript?
- 2. Які деякі помітні особливості TypeScript?
- 3. Які деякі переваги використання TypeScript?
- 4. Які недоліки використання TypeScript?
- 5. Що саме є компонентами TypeScript?
- 6. Чи можете ви пояснити інтерфейси в TypeScript?
- 7. Що таке змінні в TypeScript і як вони оголошуються різними способами?
- 8. Як можна використовувати підмножину інтерфейсу для створення нового типу?
- 9. Що ви маєте на увазі під «будь-якими» типами, і коли я маю їх використовувати?
- 10. Чому TypeScript є мовою з додатковим статично типізованим синтаксисом?
- 11. Що означають модулі в TypeScript?
- 12. Як «enum» функціонують у TypeScript?
- 13. Чим внутрішній модуль відрізняється від зовнішнього?
- 14. Що означає анонімна функція TypeScript?
- 15. Що таке простір імен у TypeScript і як його оголосити?
- 16. Які модифікатори доступу підтримує TypeScript?
- 17. Чи допускає TypeScript перевантаження функцій?
- 18. Як TypeScript дозволяє використовувати додаткові аргументи у функціях?
- 19. Як вар, let і const відрізняються один від одного?
- 20. У TypeScript опишіть декоратори?
- 21. Що означають Mixins у TypeScript?
- 22. Що таке псевдоніми типів у TypeScript?
- 23. Що означає термін «змінна області видимості»?
- 24. Для чого саме використовується noImplicitAny?
- 25. Чим відрізняються один від одного типи об'єднання та перетину?
- 26. Як визначити ключове слово TypeScript Declare?
- 27. Що таке дженерики в TypeScript?
- 28. Що означає JSX у TypeScript?
- 29. Що таке TypeScript Ambients і коли їх слід використовувати?
- 30. Що ви маєте на увазі під абстрактним класом у TypeScript?
- 31. Що таке файл TypeScript Map?
- 32. Що таке твердження типу в TypeScript?
- Висновок
Microsoft розробила та продовжує підтримувати мову програмування TypeScript. З додаванням статичної типізації як опції, це синтаксичний набір JavaScript.
Мова розробки великомасштабних програм TypeScript компілює JavaScript. Оскільки TypeScript є надмножиною JavaScript, програми, написані на JavaScript, також дійсні в TypeScript.
Ось вичерпний список найбільш типових запитань і відповідей на співбесіді з розробниками TypeScript, якщо ви відвідуєте співбесіду.
1. Що таке TypeScript і чим він відрізняється від JavaScript?
Надмножина JavaScript, TypeScript компілюється до стандартного JavaScript. З концептуальної точки зору TypeScript і JavaScript подібні до SASS і CSS.
Іншими словами, TypeScript — це ES6 JavaScript із дещо додатковими можливостями. 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 є три основні категорії компонентів, зокрема:
- Language: містить анотації щодо типу, ключових слів і синтаксису.
- Компілятор 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. Як «enum» функціонують у TypeScript?
Метод визначення колекції іменованих констант полягає у використанні переліків або перерахованих типів. Ці структури даних мають фіксовану довжину та набір фіксованих значень.
Під час представлення колекції альтернатив для певного значення в TypeScript переліки часто використовуються для опису можливостей за допомогою набору пар ключ/значення.
Давайте подивимося ілюстрацію переліку, який використовується для надання різноманітних типів користувачів.
Переліки внутрішньо перетворюються на звичайні об’єкти JavaScript за допомогою TypeScript після компіляції. Тому використання переліків краще, ніж використання кількох окремих константних змінних.
Ваш код є безпечним для типів і легшим для розуміння завдяки групуванню, яке забезпечує enum.
13. Чим внутрішній модуль відрізняється від зовнішнього?
Внутрішній модуль:
- Внутрішні модулі були особливістю попередньої ітерації Typescript.
- Ім'я та тіло внутрішніх модулів визначаються за допомогою ModuleDeclarations.
- Це члени інших модулів, які є локальними або експортованими.
- Класи, інтерфейси, функції та змінні згруповані разом у внутрішніх модулях, які можна експортувати в інший модуль.
Зовнішній модуль:
- В останній версії зовнішні модулі називаються модулями.
- Для їх створення використовується окремий вихідний файл, відомий як зовнішній модуль, і кожен з них має принаймні одну декларацію імпорту або експорту.
- В останній версії зовнішні модулі називаються модулями.
- Внутрішні оператори визначень модулів можна приховати за допомогою зовнішніх модулів, залишаючи видимими лише методи та аргументи, пов’язані з визначеною змінною.
14. Що означає анонімна функція TypeScript?
Функції, класифіковані як анонімні, не мають імені функції як ідентифікатора. Ці підпрограми динамічно визначаються під час виконання. Як і звичайні функції, анонімні функції можуть отримувати вхідні дані та давати результати.
Анонімна функція, як правило, недоступна після її створення. Змінні можна призначити анонімній функції.
15. Що таке простір імен у TypeScript і як його оголосити?
Простір імен логічно групує функціональні можливості. Вони внутрішньо зберігають застарілий код машинопису. Він охоплює риси та речі з певними зв’язками.
Інша назва простору імен — внутрішній модуль. Інтерфейси, класи, функції та змінні можуть бути включені в простір імен, щоб забезпечити набір підключених функцій.
16. Які модифікатори доступу підтримує TypeScript?
Нижче наведено приклади того, як можна використовувати модифікатори публічного, приватного та захищеного доступу в TypeScript для керування доступністю члена класу:
- Загальнодоступний – доступ доступний кожному члену класу, усім його класам-нащадкам і кожному екземпляру класу.
- Захищені – вони доступні для кожного члена класу та всіх його підкласів. Однак екземпляр класу не може отримати доступ.
- Приватний доступ до них надається лише членам класу.
Оскільки JavaScript зручний, якщо модифікатор доступу не вказано, він вважається загальнодоступним.
17. Чи допускає TypeScript перевантаження функцій?
Так, TypeScript підтримує перевантаження функцій. Але зараз це робиться дивно. Таким чином, при перевантаженні TypeScript існує лише одна реалізація з різними підписами.
У той час як другий підпис містить параметр тексту типу, перший підпис має лише один параметр номера типу. Третя функція, яка містить аргумент типу any, містить фактичну реалізацію.
Потім реалізація визначає тип наданого параметра та запускає окремий розділ коду відповідно до цього визначення.
18. Як TypeScript дозволяє використовувати додаткові аргументи у функціях?
На відміну від JavaScript, якщо ви спробуєте викликати функцію без вказівки точної кількості та типів параметрів, як зазначено в сигнатурі функції, компілятор TypeScript викличе помилку.
Ви можете використовувати додаткові параметри, використовуючи знак питання ('?'), щоб вирішити цю проблему. Це показує, що необов’язкові параметри можна позначити додаванням «?» до тих, які можуть отримати або не отримати значення.
19. Як вар, let і const відрізняються один від одного?
TypeScript пропонує три різні способи оголошення змінної, кожен із запропонованим застосуванням.
було: Оголошує глобальну або функціональну змінну з поведінкою змінних JavaScript і вказівками щодо області видимості. Змінні не потребують встановлення своїх значень під час їх оголошення.
років: оголошує блочну змінну локальної області видимості. Нехай змінні не потребують встановлення значення змінної під час їх оголошення. Термін «локальна змінна з областю блоку» відноситься до змінної, до якої можна отримати доступ лише зсередини блоку, в якому вона міститься, наприклад функції, блоку if/else або циклу. Нехай змінні не можна читати або записувати до їх оголошення, на відміну від var.
сопзЬ: Оголошує значення константи з блочною областю видимості, яке не можна змінити після ініціалізації. Змінні const потрібно ініціалізувати перед оголошенням. Для змінних, які залишаються постійними протягом усього свого існування, це оптимально.
20. У TypeScript опишіть декоратори?
Аксесор, властивість, параметр, клас, функція або декоратор — усі вони можуть бути оголошені певним чином як декоратори. Декоратори — це функції з префіксом @expression, які будуть викликані під час виконання з деталями про декороване оголошення.
Вираз має обчислювати функцію, щоб декоратори могли працювати.
Декоратори TypeScript забезпечують декларативне додавання анотацій та інформації до поточного коду.
У нашому файлі tsconfig.json або в командному рядку ви повинні активувати опцію компілятора experimentalDecorators, щоб увімкнути експериментальну підтримку для декораторів:
21. Що означають Mixins у TypeScript?
Міксини — це техніка створення класів із повторно використовуваних частин у Javascript і змішування часткових класів для створення складніших повних класів.
Концепція проста: функція B приймає клас A і повертає новий клас із доданою функціональністю, на відміну від класу A, який розширює клас B для отримання його функціональності. Функція B у цьому випадку є міксином.
22. Що таке псевдоніми типів у TypeScript?
Псевдоніми типів змінюють назву типу. Псевдоніми типів, як і інтерфейси, можна використовувати для іменування примітивів, об’єднань, кортежів та будь-яких інших типів, які інакше довелося б визначати вручну.
Псевдоніми не створюють новий тип; скоріше, він змінює назву існуючого типу. Псевдонім примітиву не дуже практичний, хоча може бути корисним для документації.
Псевдоніми типів, як і інтерфейси, можуть бути універсальними; все, що вам потрібно зробити, це додати параметри типу та використовувати їх у правій частині оголошення псевдоніма.
23. Що означає термін «змінна області видимості»?
JavaScript підтримує як локальні, так і глобальні змінні області видимості. Область — це набір об’єктів, змінних і функцій.
Приклад оголошення змінної в двох областях:
- Змінна з локальною областю – служить об’єктом функції для використання у функціях.
- Змінна з глобальною областю – цей віконний об’єкт можна використовувати як у функціях, так і поза ними
24. Для чого саме використовується noImplicitAny?
Обробка компілятором TypeScript неявних будь-яких типів вашого проекту змінюється властивістю noImplicitAny у файлі конфігурації tsconfig.json для проектів TypeScript.
Прапор noImplicitAny може бути встановлений на true або false і завжди змінний після ініціалізації. З огляду на те, що кожен проект унікальний, немає правильної чи неправильної відповіді на те, яким має бути це число.
Розуміння відмінностей між увімкненим і вимкненим станами прапора може допомогти вам вибрати параметри, які використовувати для прапора.
Компілятор не визначає тип змінної на основі того, як вона використовується, якщо для прапора noImplicitAny встановлено значення false (за замовчуванням). Натомість компілятор за замовчуванням встановлює будь-який тип.
Однак, якщо для параметра noImplicitAny встановлено значення true, компілятор докладе зусиль, щоб визначити тип і викличе помилку під час компіляції, якщо він не зможе це зробити.
25. Чим відрізняються один від одного типи об'єднання та перетину?
Замість того, щоб генерувати нові типи з нуля, об’єднання та типи перетину дозволяють вам створювати та змішувати існуючі типи. І об’єднання, і перетин мають відмінні якості, які роблять їх ідеальними для певних випадків використання.
Тип, який може бути одним із кількох видів, називається типом об’єднання. Список типів, які будуть використані в новому типі, розділено за допомогою | символ (вертикальна смуга) у типах об’єднань.
Давайте розглянемо ілюстрацію:
З іншого боку, перетин визначається як тип, який об’єднує багато типів в один, об’єднуючи всі особливості кожного типу для створення нового типу. Список типів, які буде об’єднано, розділено на перетини за допомогою символу &.
Давайте розглянемо ілюстрацію:
26. Як визначити ключове слово TypeScript Declare?
У бібліотеках або фреймворках JavaScript немає файлів декларацій TypeScript. Однак ви повинні використовувати ключове слово declare, щоб використовувати їх у файлі TypeScript, не стикаючись із помилками компіляції.
Якщо ви хочете вказати змінну, яка вже може існувати десь в іншому місці, ви використовуєте ключове слово declare в оголошеннях і методах середовища.
27. Що таке дженерики в TypeScript?
Інструмент під назвою TypeScript Generics пропонує метод виготовлення деталей для багаторазового використання. Замість того, щоб працювати лише з однією формою даних, він може розробляти компоненти, які можуть працювати з різними типами даних.
Крім того, він забезпечує безпеку типу без шкоди для ефективності чи продуктивності. Завдяки генерикам ми можемо створювати загальні класи, загальні функції, загальні методи та загальні інтерфейси.
Універсали — це високо типізовані колекції, оскільки параметр типу записується між відкритими () і закритими (>) дужками. Він використовує унікальний вид змінної типу під назвою T, яка означає типи.
28. Що означає JSX у TypeScript?
JSX — це законний JavaScript, який можна перетворити з вбудованого XML-подібного синтаксису. Разом із фреймворком React набув популярності JSX.
Пряма компіляція, перевірка типу та вбудовування JSX у JavaScript підтримуються TypeScript. Ви повинні надати своєму файлу розширення a.tsx і активувати опцію JSX, якщо ви хочете її використовувати.
29. Що таке TypeScript Ambients і коли їх слід використовувати?
Компілятор отримує інформацію про реальний вихідний код, який знаходиться в іншому місці, через оголошення середовища.
Він буде зламаний без попереднього повідомлення, якщо ми спробуємо використати ці вихідні коди під час виконання, але їх немає. Документоподібні файли є файлами декларацій зовнішнього середовища.
Якщо джерело змінюється, документація має бути оновлена, і якщо файл декларації середовища не буде змінено, виникнуть проблеми з компілятором.
Крім того, це дозволяє нам використовувати відомі бібліотеки JavaScript, які вже широко використовуються, такі як jQuery, AngularJS, NodeJS тощо.
30. Що ви маєте на увазі під абстрактним класом у TypeScript?
Абстрактні класи визначають контракт об’єкта, не допускаючи прямої інстанціації об’єкта. Однак абстрактний клас може також запропонувати інформацію про реалізацію свого члена.
Один або кілька абстрактних членів можна знайти в абстрактному класі. Абстрактні члени суперкласу повинні мати реалізацію, надану будь-якими класами, які розширюють абстрактний клас.
Давайте розглянемо приклад TypeScript абстрактного класу та те, як інший клас може його розширити. Хоча класи Car і Bike у наведеному нижче прикладі розширюють клас Vehicle, кожен з них реалізує функцію drive() унікальним способом.
31. Що таке файл TypeScript Map?
Файл вихідної карти, який називається файлом карти TypeScript, містить дані про наші вихідні файли. Файли вихідної карти або файли .map дозволяють інструментам зіставляти вихідний код JavaScript із вихідними файлами TypeScript, які його створили.
Крім того, ці файли можуть використовуватися налагоджувачами, що дозволяє нам налагоджувати файл TypeScript, а не файл JavaScript.
32. Що таке твердження типу в TypeScript?
Хоча твердження типу функціонує подібно до приведення типів в інших мовах, таких як C# і Java, воно не виконує перевірку типу чи перевпорядкування даних.
Хоча підтвердження типу не впливає на час виконання, приведення типу пропонує цю підтримку. З іншого боку, твердження типу використовуються лише компілятором і надають вказівки щодо того, як ми хочемо перевіряти наш код.
Висновок
Підсумовуючи, ми сподіваємося, що ці запитання для співбесіди щодо TypeScript будуть корисними для вас, незалежно від того, чи ви розробник, який готується до співбесіди, чи менеджер з найму, який намагається знайти найкращого кандидата.
Пам’ятайте, що процес найму вимагає не лише технічних знань. Щоб переконатися, що ви знайдете (або знайдете відповідного претендента) на роботу, минулий досвід і навички спілкування є однаково важливими.
Багато запитань на співбесіді з TypeScript є відкритими та не мають єдиної правильної відповіді, тому майте це на увазі.
Інтерв'юери цікавляться обґрунтуванням ваших відповідей.
Завжди будьте готові до подальших запитів із поясненням того, як ви прийшли до своєї відповіді. Опишіть свій процес мислення.
залишити коментар