Съдържание[Крия][Покажи]
- 1. Какво точно е TypeScript и как се различава от JavaScript?
- 2. Кои са някои забележителни характеристики на TypeScript?
- 3. Какви са някои предимства от използването на TypeScript?
- 4. Какви са някои недостатъци на използването на TypeScript?
- 5. Какво точно представляват компонентите на TypeScript?
- 6. Можете ли да обясните интерфейсите в TypeScript?
- 7. Какво представляват променливите в TypeScript и как се декларират по различни начини?
- 8. Как може подмножество от интерфейс да се използва за генериране на нов тип?
- 9. Какво имате предвид под „всякакви“ типове и кога трябва да ги използвам?
- 10. Как TypeScript е език с незадължителен статично въведен синтаксис?
- 11. Какво означават модулите в TypeScript?
- 12. Как функционират „enums“ в TypeScript?
- 13. Какво отличава вътрешния модул от външния?
- 14. Какво означава анонимната функция на TypeScript?
- 15. В TypeScript какво е пространство от имена и как се декларира такова?
- 16. Какви модификатори за достъп поддържа TypeScript?
- 17. TypeScript позволява ли претоварване на функции?
- 18. Как TypeScript позволява незадължителни аргументи във функциите?
- 19. Как var, let и const се различават един от друг?
- 20. В TypeScript опишете декораторите?
- 21. Какво означават Mixins в TypeScript?
- 22. Какво точно представляват псевдонимите на типове в TypeScript?
- 23. Какво означава терминът „променлива на обхвата“?
- 24. За какво точно се използва noImplicitAny?
- 25. Как типовете обединение и пресичане се различават един от друг?
- 26. Как се дефинира TypeScript Declare Keyword?
- 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 има три основни категории компоненти, включително:
- Език: Включва анотации за типа, ключовите думи и синтаксиса.
- TypeScript компилатор: Инструкциите на TypeScript се превеждат в JavaScript от този компилатор (tsc).
- Езикова услуга TypeScript: Езиковата услуга предлага подобни на редактор приложения като втори слой върху основния процес на компилиране. Стандартният набор от общи операции за редактиране се поддържа от езиковата услуга.
6. Можете ли да обясните интерфейсите в TypeScript?
TypeScript използва интерфейси за указване на синтаксиса на обектите. С други думи, форми на данни като обекти или масив от елементи могат да бъдат описани с помощта на интерфейси. Ключовата дума за интерфейса, името на интерфейса и неговата дефиниция се използват за деклариране на интерфейси. Нека разгледаме основния интерфейс на потребителския обект.
След това типът на променлива може да бъде зададен с помощта на интерфейса (подобно на това как присвоявате примитивни типове на променлива). След това свойствата на интерфейса ще бъдат изпълнени от променлива от типа потребител.
Вашият TypeScript проект се възползва от интерфейсите, защото осигуряват еднородност. Освен това интерфейсите подобряват инструментите на вашия проект, като подобряват възможностите за автоматично довършване на IDE и гарантират, че правилните стойности се доставят на конструктори и методи.
7. Какво представляват променливите в TypeScript и как се декларират по различни начини?
Променливата е специално определена област от паметта, която се използва за съхраняване на стойности. Двоеточие (:) се поставя след името на променливата и е последвано от типа, когато се декларира променлива в TypeScript. Ние декларираме променливи с ключовата дума var, точно както в JavaScript.
При декларирането на променлива в Typescript трябва да се спазват определени указания:
- Името не може да започва с цифра.
- Името на променливата трябва да съдържа букви или цифри.
- Символът за долар ($) и долната черта (_) са единствените специални знаци, които са разрешени в това поле.
8. Как може подмножество от интерфейс да се използва за генериране на нов тип?
Като предоставите съществуващ тип или интерфейс и изберете ключовете, които да бъдат изключени от новия тип, можете да създадете нов тип в TypeScript, като използвате пропуснатия тип помощна програма.
Примерът, който следва, демонстрира как да се конструира нов тип, наречен UserPreview, който е базиран на потребителския интерфейс, но изключва свойството имейл.
9. Какво имате предвид под „всякакви“ типове и кога трябва да ги използвам?
Понякога трябва да запишете стойност в променлива, но не сте сигурни за типа на променливата предварително. Стойността може да произхожда от въвеждане на потребител или заявка за API, например. Можете да дадете всякакъв тип стойност на тип променлива, като използвате типа „any“.
Когато типът на променлива не е изрично указан и компилаторът не може да го определи от контекста, TypeScript смята, че променливата е от тип any.
10. Как TypeScript е език с незадължителен статично въведен синтаксис?
Възможно е да инструктирате компилатора да пренебрегне типа на променливата в TypeScript, тъй като тя е опционално статично въведена. Всеки тип данни може да се използва за присвояване на всякакъв вид стойност на променливата. Когато се компилира, TypeScript няма да предостави никаква проверка за грешки.
11. Какво означават модулите в TypeScript?
Ефективно е да групирате заедно съответните променливи, функции, класове, интерфейси и т.н., като използвате модули. Може да се използва, но не в глобалния обхват, а само в собствения си обхват.
По същество дефинираните променливи, функции, класове и интерфейси на модула не могат да бъдат директно достъпни извън модула.
Ключовата дума за експортиране може да се използва за изграждане на модул, докато ключовата дума за импортиране може да се използва за включване на модул в друг модул.
12. Как функционират „enums“ в TypeScript?
Метод за дефиниране на колекция от наименувани константи е използването на enum или изброени типове. Тези структури от данни имат фиксирана дължина и набор от фиксирани стойности.
Когато се представя колекция от алтернативи за дадена стойност в TypeScript, enum-ите често се използват за описание на възможностите с помощта на набор от двойки ключ/стойност.
Нека видим илюстрация на enum, използвана за предоставяне на различни видове потребители.
Енумите се преобразуват вътрешно в обикновени JavaScript обекти от TypeScript след компилация. Следователно използването на enum е за предпочитане пред използването на няколко отделни константни променливи.
Вашият код е безопасен за тип и по-лесен за разбиране поради групирането, което предоставят enum.
13. Какво отличава вътрешния модул от външния?
Вътрешен модул:
- Вътрешните модули бяха характеристика на предишната итерация на Typescript.
- Името и тялото на вътрешните модули се дефинират с помощта на ModuleDeclarations.
- Това са членове на други модули, които са локални или експортирани.
- Класовете, интерфейсите, функциите и променливите са групирани заедно във вътрешни модули, които могат да бъдат експортирани в друг модул.
Външен модул:
- В най-новата версия външните модули се наричат модули.
- За създаването им се използва отделен изходен файл, известен като външен модул, и всеки има поне една декларация за импортиране или експортиране.
- В най-новата версия външните модули се наричат модули.
- Вътрешните изрази на дефинициите на модула могат да бъдат скрити с помощта на външни модули, оставяйки видими само методите и аргументите, свързани с дефинираната променлива.
14. Какво означава анонимната функция на TypeScript?
Функциите, класифицирани като анонимни, нямат име на функция като идентификатор. Тези процедури се дефинират динамично по време на изпълнение. Подобно на обикновените функции, анонимните функции могат да приемат входни данни и да произвеждат резултати.
Анонимната функция обикновено е недостъпна, след като бъде създадена. Променливите могат да бъдат присвоени на анонимна функция.
15. В TypeScript какво е пространство от имена и как се декларира такова?
Пространство от имена логически групира функционалности. Те запазват вътрешно наследения код на машинописа. Той обхваща чертите и нещата с конкретни връзки.
Друго име за пространство от имена е вътрешен модул. Интерфейси, класове, функции и променливи могат да бъдат включени в пространство от имена, за да осигурят колекция от свързани функционалности.
16. Какви модификатори за достъп поддържа TypeScript?
Следват примери за това как модификаторите за публичен, частен и защитен достъп в TypeScript могат да се използват за контролиране на достъпността на член на класа:
- Публичен – Достъпът е достъпен за всеки член на класа, всички негови класове наследници и всеки екземпляр на класа.
- Защитени – Те са достъпни за всеки член на класа и всички негови подкласове. Обаче екземпляр на клас няма достъп.
- Частен достъп до тях е ограничен само до членове на класа.
Тъй като JavaScript е удобен, ако не е даден модификатор за достъп, се приема, че е публичен.
17. TypeScript позволява ли претоварване на функции?
Да, претоварването на функции се поддържа от TypeScript. Но сега това, което се прави, е странно. Следователно, когато се претоварва с TypeScript, има само една реализация с различни подписи.
Докато вторият подпис съдържа параметър от тип текст, първият подпис има само един параметър от тип номер. Третата функция, която включва аргумент от тип any, съдържа действителната реализация.
След това внедряването определя типа на предоставения параметър и изпълнява отделен раздел от код в съответствие с това определение.
18. Как TypeScript позволява незадължителни аргументи във функциите?
Противно на JavaScript, ако се опитате да извикате функция, без да посочите точното количество и видове параметри, както е посочено в сигнатурата на функцията, компилаторът на TypeScript ще изведе грешка.
Можете да използвате незадължителни параметри, като използвате символа с въпросителен знак ('?'), за да заобиколите този проблем. Това показва, че незадължителните параметри могат да бъдат обозначени чрез добавяне на "?" към тези, които могат или не могат да получат стойност.
19. Как var, let и const се различават един от друг?
Три различни начина за деклариране на променлива се предлагат от TypeScript, всеки с предложено приложение.
Var: Декларира глобална или функционална променлива с поведението на променливите на 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 (по подразбиране). Вместо това типът е зададен на any по подразбиране от компилатора.
Въпреки това, ако опцията noImplicitAny е зададена на true, компилаторът ще направи усилие да изведе типа и ще предизвика грешка по време на компилиране, ако не може да го направи.
25. Как типовете обединение и пресичане се различават един от друг?
Вместо да генерирате нови видове от нулата, обединенията и типовете пресичане ви позволяват да съставяте и смесвате съществуващи типове. И обединението, и пресичането имат отличителни качества, които ги правят идеални за определени случаи на употреба.
Тип, който може да бъде един от няколко вида, се нарича тип обединение. Списъкът с типове, които ще бъдат използвани в новия тип, е разделен с | (вертикална лента) символ в типове съюзи.
Нека да разгледаме илюстрация:
От друга страна, пресичането се определя като тип, който обединява много типове в един, интегрирайки всички характеристики на всеки тип, за да формира нов тип. Списъкът с видове, които ще бъдат обединени, е разделен на пресечни точки с помощта на символа &.
Нека разгледаме една илюстрация:
26. Как се дефинира TypeScript Declare Keyword?
В 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 файл, съдържа данни за нашите оригинални файлове. Файловете с изходна карта или .map файлове позволяват на инструментите да съпоставят изходния код на JavaScript и изходните файлове на TypeScript, които са го произвели.
Освен това тези файлове могат да се използват от дебъгери, което ни позволява да отстраняваме грешки във файла TypeScript, а не във файла JavaScript.
32. Какво представляват твърденията за тип в TypeScript?
Въпреки че утвърждаването на типа функционира подобно на преобразуването на типове в други езици като C# и Java, то не извършва проверка на типа или пренареждане на данни.
Докато утвърждаването на типа няма ефект върху времето за изпълнение, преобразуването на тип предлага тази поддръжка. Твърденията за тип, от друга страна, се използват само от компилатора и предоставят насоки за това как искаме да бъде изследван нашият код.
Заключение
В заключение, надяваме се, че тези въпроси за интервю с TypeScript ще ви бъдат полезни, независимо дали сте разработчик, който се готви за интервю за работа, или мениджър по наемането на персонал, който се опитва да намери най-добрия кандидат.
Не забравяйте, че процесът на набиране включва повече от просто технически познания. За да сте сигурни, че намирате (или намирате подходящия кандидат за) работата, миналият опит и меките умения са също толкова важни.
Много въпроси за интервю с TypeScript са отворени и нямат нито един правилен отговор, така че имайте това предвид.
Интервюиращите се интересуват от обосновката зад вашите отговори.
Винаги бъдете готови за последващи запитвания, обясняващи как сте стигнали до вашия отговор. Опишете мисловния си процес.
Оставете коментар