Obsah[Skrýt][Ukázat]
- 1. Co přesně je TypeScript a jak se liší od JavaScriptu?
- 2. Jaké jsou některé pozoruhodné vlastnosti TypeScriptu?
- 3. Jaké jsou některé výhody používání TypeScript?
- 4. Jaké jsou některé nevýhody používání TypeScript?
- 5. Co přesně jsou komponenty TypeScriptu?
- 6. Můžete vysvětlit rozhraní v TypeScriptu?
- 7. Co jsou proměnné v TypeScriptu a jak se různými způsoby deklarují?
- 8. Jak lze použít podmnožinu rozhraní ke generování nového typu?
- 9. Co myslíte „jakýmikoli“ typy a kdy je mám použít?
- 10. Jak je TypeScript jazykem s volitelnou staticky typovanou syntaxí?
- 11. Co v TypeScript znamenají moduly?
- 12. Jak fungují „výčty“ v TypeScriptu?
- 13. Co odlišuje interní modul od externího modulu?
- 14. Co znamená Anonymní funkce TypeScriptu?
- 15. Co je v TypeScriptu jmenný prostor a jak jej deklarujete?
- 16. Jaké modifikátory přístupu podporuje TypeScript?
- 17. Umožňuje TypeScript přetížení funkcí?
- 18. Jak TypeScript umožňuje volitelné argumenty ve funkcích?
- 19. Jak se od sebe liší var, let a const?
- 20. Popište v TypeScript dekorátory?
- 21. Co v TypeScript znamenají Mixins?
- 22. Co přesně jsou aliasy typu v TypeScriptu?
- 23. Co znamená pojem „Proměnná rozsahu“?
- 24. K čemu přesně se noImplicitAny používá?
- 25. Jak se od sebe liší typy svazků a průniků?
- 26. Jak definujete klíčové slovo deklarovat TypeScript?
- 27. Co jsou v TypeScriptu generika?
- 28. Co znamená JSX v TypeScriptu?
- 29. Co jsou prostředí TypeScript a kdy je mám použít?
- 30. Co rozumíte abstraktní třídou v TypeScriptu?
- 31. Co přesně je mapový soubor TypeScript?
- 32. Co jsou v TypeScript tvrzení typu?
- Proč investovat do čističky vzduchu?
Microsoft vyvinul a nadále podporuje programovací jazyk TypeScript. S přidáním statického psaní jako možnosti jde o syntaktickou nadmnožinu JavaScriptu.
Jazyk TypeScript pro vývoj aplikací ve velkém měřítku kompiluje JavaScript. Protože TypeScript je nadmnožinou JavaScriptu, programy napsané v JavaScriptu jsou také platné v TypeScriptu.
Zde je úplný seznam nejtypičtějších otázek a odpovědí na rozhovory s vývojáři TypeScript v případě, že se nějakého účastníte.
1. Co přesně je TypeScript a jak se liší od JavaScriptu?
TypeScript, nadmnožina JavaScriptu, se kompiluje do standardního JavaScriptu. Z koncepčního hlediska jsou TypeScript a JavaScript podobné SASS a CSS.
Jinými slovy, TypeScript je ES6 JavaScript s několika dalšími funkcemi. JavaScript je skriptovací jazyk více podobný Pythonu, zatímco TypeScript je objektově orientovaný, staticky typovaný jazyk srovnatelný s Java a C#.
Třídy a rozhraní jsou součástí objektově orientovaného návrhu TypeScriptu a odvození typu je jedním z mnoha dostupných nástrojů díky jeho statickému typování.
JavaScript se zapisuje do souboru s příponou .js, zatímco TypeScript se zapisuje do souboru s příponou .ts.
Na rozdíl od JavaScriptu nelze kód TypeScript přímo spustit v prohlížeči ani na jiné platformě a prohlížeče mu nerozumí. Cílová platforma pak spustí prostý JavaScript, který byl vygenerován ze souborů .ts pomocí transpileru TypeScript.
2. Jaké jsou některé pozoruhodné vlastnosti TypeScriptu?
- Statické psaní je funkce TypeScriptu, která pomáhá při kontrole typu během kompilace. Takže i bez spuštění skriptu můžete odhalit chyby v kódu při jeho psaní.
- DOM lze změnit pomocí TypeScriptu a přidat nebo odebrat položky.
- Kompilátor TypeScript může mít nainstalován jakýkoli operační systém, včetně Windows, macOS a Linuxu.
- Třídy, rozhraní a moduly jsou některé z funkcí, které nabízí TypeScript. Může tak vytvářet objektově orientovaný kód pro vývoj na straně klienta i na straně serveru.
- Většina funkcí ECMAScript 2015 (ES 6, 7) je již zahrnuta v TypeScript, včetně třídy, rozhraní, funkcí Arrow atd.
- Pokud používáte dynamické psaní JavaScriptu, TypeScript také podporuje volitelné statické psaní.
3. Jaké jsou některé výhody používání TypeScript?
- Jakýkoli JavaScript engine nebo prohlížeč může spustit TypeScript, protože je rychlý, snadno se učí a běží rychle.
- Sdílí stejnou syntaxi a sémantiku jako JavaScript.
- To usnadňuje rychlejší psaní front-end kódu vývojáři backendu.
- Zahrnuje funkce ES6 a ES7, které mohou funkce v JavaScriptu Motory ES5 jako Node.js.
- Stávající JavaScriptové knihovny jako Jquery, D3.js atd. jsou podporovány prostřednictvím souboru Definition, který má příponu .d.ts.
- Skript JavaScript, který již existuje, může vyvolat kód TypeScript. Bezproblémově se také integruje se současnými frameworky a knihovnami JavaScriptu.
4. Jaké jsou některé nevýhody používání TypeScript?
- Kódování pomocí TypeScript vyžaduje zdlouhavý proces kompilace.
- Nepodporuje třídy, které jsou abstraktní.
- Kvalita souborů s definicí typů je problém.
- Každá knihovna třetí strany musí mít definiční soubor, aby mohla být použita.
- Pokud chceme spustit aplikaci TypeScript v prohlížeči, je nutný kompilační krok pro převod TypeScript na JavaScript.
- JavaScript používají weboví vývojáři již mnoho let a TypeScript nepřináší nic nového.
5. Co přesně jsou komponenty TypeScriptu?
V TypeScriptu existují tři hlavní kategorie komponent, včetně:
- Jazyk: Obsahuje anotace pro typ, klíčová slova a syntaxi.
- Kompilátor TypeScript: Instrukce TypeScript jsou přeloženy do JavaScriptu tímto kompilátorem (tsc).
- Služba jazyka TypeScript: Jazyková služba nabízí aplikace podobné editorům jako druhou vrstvu nad základním procesem kompilátoru. Jazyková služba podporuje standardní sadu běžných editačních operací.
6. Můžete vysvětlit rozhraní v TypeScriptu?
TypeScript používá rozhraní k určení syntaxe entit. Jinými slovy, datové formy jako objekty nebo pole položek lze popsat pomocí rozhraní. K deklaraci rozhraní se používá klíčové slovo rozhraní, název rozhraní a jeho definice. Podívejme se na základní rozhraní uživatelského objektu.
Typ proměnné lze poté nastavit pomocí rozhraní (podobně jako přiřazování primitivních typů k proměnné). Vlastnosti rozhraní pak bude splňovat proměnná typu Uživatel.
Váš projekt TypeScript těží z rozhraní, protože poskytují jednotnost. Rozhraní navíc vylepšují nástroje vašeho projektu tím, že vylepšují možnosti automatického dokončování IDE a zaručují, že konstruktorům a metodám budou dodány správné hodnoty.
7. Co jsou proměnné v TypeScriptu a jak se různými způsoby deklarují?
Proměnná je specificky určená oblast paměti, která se používá k uchovávání hodnot. Dvojtečka (:) je umístěna za názvem proměnné a je následována typem při deklaraci proměnné v TypeScriptu. Proměnné deklarujeme pomocí klíčového slova var, stejně jako v JavaScriptu.
Při deklarování proměnné v Typescriptu je třeba dodržovat určitá pravidla:
- Název nemůže začínat číslem.
- Název proměnné musí obsahovat písmena nebo číslice.
- Symbol dolaru ($) a podtržítko (_) jsou jediné speciální znaky, které jsou v tomto poli povoleny.
8. Jak lze použít podmnožinu rozhraní ke generování nového typu?
Dodáním existujícího typu nebo rozhraní a výběrem klíčů, které mají být z nového typu vyloučeny, můžete vytvořit nový typ v TypeScript pomocí obslužného typu vynechat.
Následující příklad ukazuje, jak vytvořit nový typ s názvem UserPreview, který je založen na uživatelském rozhraní, ale vylučuje vlastnost email.
9. Co myslíte „jakýmikoli“ typy a kdy je mám použít?
Někdy potřebujete uložit hodnotu do proměnné, ale předem si nejste jisti typem proměnné. Hodnota může pocházet například z uživatelského vstupu nebo požadavku API. Typu proměnné můžete přiřadit libovolný typ hodnoty pomocí typu „any“.
Když typ proměnné není explicitně specifikován a kompilátor jej není schopen určit z kontextu, TypeScript se domnívá, že proměnná je typu any.
10. Jak je TypeScript jazykem s volitelnou staticky typovanou syntaxí?
Je možné nařídit kompilátoru, aby ignoroval typ proměnné v TypeScript, protože je volitelně staticky typována. Jakýkoli datový typ lze použít k přiřazení libovolné hodnoty proměnné. Při kompilaci nebude TypeScript poskytovat žádnou kontrolu chyb.
11. Co v TypeScript znamenají moduly?
Je efektivní seskupit relevantní proměnné, funkce, třídy, rozhraní atd. pomocí modulů. Může být použit, ale ne v globálním rozsahu, pouze ve svém vlastním rozsahu.
V podstatě nelze přímo přistupovat k proměnným, funkcím, třídám a rozhraním modulu definovaným v modulu.
Klíčové slovo export lze použít k vytvoření modulu, zatímco klíčové slovo import lze použít k zahrnutí modulu do jiného modulu.
12. Jak fungují „výčty“ v TypeScriptu?
Metodou definování kolekce pojmenovaných konstant je použití výčtů nebo výčtových typů. Tyto datové struktury mají pevnou délku a soubor pevných hodnot.
Při reprezentaci kolekce alternativ pro danou hodnotu v TypeScriptu se často používají výčty k popisu možností pomocí sady párů klíč/hodnota.
Podívejme se na ilustraci výčtu používaného k poskytování různých druhů uživatelů.
Výčty jsou interně převedeny na běžné objekty JavaScriptu pomocí TypeScriptu po kompilaci. Použití výčtů je proto vhodnější než použití několika samostatných konstantních proměnných.
Váš kód je typově bezpečný a snáze pochopitelný díky seskupení, které poskytují výčty.
13. Co odlišuje interní modul od externího modulu?
Interní modul:
- Interní moduly byly rysem předchozí iterace Typescriptu.
- Název a tělo interních modulů jsou definovány pomocí ModuleDeclarations.
- Jedná se o členy jiných modulů, které jsou lokální nebo exportované.
- Třídy, rozhraní, funkce a proměnné jsou seskupeny do interních modulů, které lze exportovat do jiného modulu.
Externí modul:
- V nejnovější verzi se externí moduly označují jako moduly.
- K jejich vytvoření se používá samostatný zdrojový soubor známý jako externí modul a každý z nich má alespoň jedno dovozní nebo vývozní prohlášení.
- V nejnovější verzi se externí moduly označují jako moduly.
- Vnitřní příkazy definic modulů lze skrýt pomocí externích modulů, přičemž zůstanou viditelné pouze metody a argumenty spojené s definovanou proměnnou.
14. Co znamená Anonymní funkce TypeScriptu?
Funkce klasifikované jako anonymní postrádají název funkce jako identifikátor. Tyto rutiny jsou dynamicky definovány během běhu. Stejně jako běžné funkce mohou anonymní funkce přijímat vstupy a vytvářet výsledky.
Anonymní funkce je po vytvoření obvykle nedostupná. Proměnné lze přiřadit anonymní funkci.
15. Co je v TypeScriptu jmenný prostor a jak jej deklarujete?
Namespace logicky seskupuje funkce. Ty interně uchovávají starší kód strojopisu. Zahrnuje vlastnosti a věci s konkrétními souvislostmi.
Jiný název pro jmenný prostor je interní modul. Rozhraní, třídy, funkce a proměnné mohou být zahrnuty do jmenného prostoru, aby poskytovaly kolekci propojených funkcí.
16. Jaké modifikátory přístupu podporuje TypeScript?
Níže jsou uvedeny příklady toho, jak lze modifikátory veřejného, soukromého a chráněného přístupu v TypeScript použít k řízení přístupnosti člena třídy:
- Veřejný – Přístup je dostupný všem členům třídy, všem jejím podřízeným třídám a každé instanci třídy.
- Chráněné – Jsou přístupné všem členům třídy a všem jejím podtřídám. Instance třídy však nemá přístup.
- Soukromý přístup k nim je omezen pouze na členy třídy.
Protože JavaScript je užitečný, pokud není zadán modifikátor přístupu, předpokládá se, že je veřejný.
17. Umožňuje TypeScript přetížení funkcí?
Ano, přetížení funkcí TypeScript podporuje. Ale teď je to divné. Proto při přetížení TypeScriptem existuje pouze jedna implementace s různými podpisy.
Zatímco druhý podpis obsahuje parametr typu text, první podpis má pouze jeden parametr typu číslo. Třetí funkce, která obsahuje argument typu any, obsahuje skutečnou implementaci.
Implementace pak určí typ poskytnutého parametru a spustí samostatnou sekci kódu v souladu s tímto určením.
18. Jak TypeScript umožňuje volitelné argumenty ve funkcích?
Na rozdíl od JavaScriptu, pokud se pokusíte volat funkci, aniž byste specifikovali přesné množství a druhy parametrů, jak je uvedeno v podpisu funkce, kompilátor TypeScript vyvolá chybu.
Chcete-li tento problém obejít, můžete použít volitelné parametry pomocí symbolu otazníku ('?'). Ukazuje, že volitelné parametry lze označit přidáním „?“ k těm, které mohou nebo nemusí získat hodnotu.
19. Jak se od sebe liší var, let a const?
TypeScript nabízí tři různé způsoby deklarace proměnné, každý s navrženou aplikací.
byl: Deklaruje globální proměnnou nebo proměnnou s rozsahem funkcí s pokyny pro chování a rozsah proměnných JavaScriptu. Proměnné nemusí při deklaraci nastavovat jejich hodnoty.
nechat: deklaruje lokálně vymezenou blokovou proměnnou. Nechť proměnné nepotřebují, aby byla nastavena hodnota proměnné, když jsou deklarovány. Termín „lokální proměnná v rozsahu bloku“ označuje proměnnou, ke které lze přistupovat pouze z bloku, ve kterém je obsažena, jako je funkce, blok if/else nebo smyčka. Nechť proměnné nelze číst ani do nich zapisovat před jejich deklarací, na rozdíl od var.
const: Deklaruje hodnotu konstanty v rozsahu bloku, kterou nelze po inicializaci změnit. Proměnné Const je třeba před deklarací inicializovat. Pro proměnné, které zůstávají po celou dobu své existence konstantní, je to optimální.
20. Popište v TypeScript dekorátory?
Přístupový objekt, vlastnost, parametr, třída, funkce nebo dekorátor mohou být deklarovány specifickým způsobem jako dekorátory. Dekorátory jsou funkce s předponou @expression, které budou vyvolány za běhu s podrobnostmi o dekorované deklaraci.
Výraz musí vyhodnotit funkci, aby dekorátory fungovaly.
Dekorátory TypeScript poskytují cíl deklarativního přidávání anotací a informací k aktuálnímu kódu.
V našem souboru tsconfig.json nebo na příkazovém řádku musíte aktivovat možnost kompilátoru experimentalDecorators, abyste povolili experimentální podporu pro dekorátory:
21. Co v TypeScript znamenají Mixins?
Mixiny jsou technikou vytváření tříd z opakovaně použitelných částí v Javascriptu a smícháním dílčích tříd za účelem vytvoření složitějších úplných tříd.
Koncept je přímočarý: funkce B přijímá třídu A a vrací novou třídu s přidanou funkčností, na rozdíl od třídy A rozšiřující třídu B o její funkčnost. Funkce B je v tomto případě mixin.
22. Co přesně jsou aliasy typu v TypeScriptu?
Aliasy typu mění název typu. Typové aliasy, stejně jako rozhraní, lze použít k pojmenování primitiv, sjednocení, n-tic a dalších typů, které by jinak musely být definovány ručně.
Aliasing nevytváří nový typ; spíše změní název existujícího typu. Aliasing primitiva není ve skutečnosti praktický, i když může být přínosný pro dokumentaci.
Typové aliasy, stejně jako rozhraní, mohou být univerzální; vše, co musíte udělat, je přidat parametry typu a použít je na pravé straně deklarace aliasu.
23. Co znamená pojem „Proměnná rozsahu“?
JavaScript podporuje lokální i globální proměnné rozsahu. Rozsah je kolekce objektů, proměnných a funkcí.
Příklad deklarace proměnné ve dvou rozsahech je:
- Proměnná s lokálním rozsahem – Slouží jako funkční objekt pro použití v rámci funkcí.
- Proměnná s globálním rozsahem – Tento objekt okna lze použít v rámci funkcí i mimo ně
24. K čemu přesně se noImplicitAny používá?
Zacházení kompilátoru TypeScript s implicitními libovolnými typy vašeho projektu je změněno vlastností noImplicitAny v konfiguračním souboru tsconfig.json pro projekty TypeScript.
Příznak noImplicitAny lze nastavit na hodnotu true nebo false a po inicializaci je vždy měnitelný. Vzhledem k tomu, že každý projekt je jedinečný, neexistuje správná nebo špatná odpověď na to, jaké by toto číslo mělo být.
Pochopení rozdílů mezi stavy zapnutí a vypnutí vlajky vám může pomoci vybrat, jaké nastavení pro příznak použít.
Kompilátor neurčuje typ proměnné na základě toho, jak se používá, pokud je příznak noImplicitAny nastaven na hodnotu false (výchozí). Typ je místo toho ve výchozím nastavení kompilátorem nastaven na any.
Pokud je však možnost noImplicitAny nastavena na hodnotu true, kompilátor se pokusí odvodit typ a vyvolá chybu při kompilaci, pokud to nebude možné.
25. Jak se od sebe liší typy svazků a průniků?
Namísto generování nových druhů od začátku vám sjednocení a typy průniků umožňují skládat a míchat existující typy. Sjednocení i průnik mají charakteristické vlastnosti, díky kterým jsou perfektní pro určité případy použití.
Typ, který může být jedním z několika druhů, se nazývá sjednocovací typ. Seznam typů, které budou použity v novém typu, je rozdělen pomocí | (svislá čára) symbol v typech svazků.
Podívejme se na ilustraci:
Na druhou stranu je průsečík definován jako typ, který spojuje mnoho typů do jednoho, integruje všechny vlastnosti každého typu do nového typu. Seznam druhů, které budou sloučeny, je rozdělen na průsečíky pomocí symbolu &.
Podívejme se na ilustraci:
26. Jak definujete klíčové slovo deklarovat TypeScript?
V knihovnách nebo frameworkech JavaScriptu nejsou žádné deklarační soubory TypeScript. Musíte však použít klíčové slovo deklarovat, abyste je mohli použít v souboru TypeScript, aniž by došlo k chybám při kompilaci.
Pokud chcete specifikovat proměnnou, která by již mohla existovat někde jinde, použijte klíčové slovo deklarovat v ambientních deklaracích a metodách.
27. Co jsou v TypeScriptu generika?
Nástroj nazvaný TypeScript Generics nabízí metodu pro výrobu opakovaně použitelných dílů. Namísto práce pouze s jednou formou dat může vyvíjet komponenty, které mohou pracovat s řadou datových typů.
Navíc nabízí typovou bezpečnost, aniž by byla obětována účinnost nebo produktivita. Díky generikám můžeme vytvářet generické třídy, generické funkce, generické metody a generická rozhraní.
Generika jsou vysoce typované kolekce, protože parametr typu je zapsán mezi otevřené () a uzavřené (>) závorky. Využívá jedinečný druh typové proměnné s názvem T, což je zkratka pro typy.
28. Co znamená JSX v TypeScriptu?
JSX je legitimní JavaScript, který lze převést z vložitelné syntaxe podobné XML. Spolu s rámcem React získalo JSX popularitu.
TypeScript podporuje přímou kompilaci, ověřování typu a vkládání JSX do JavaScriptu. Chcete-li jej používat, musíte svému souboru dát příponu a.tsx a aktivovat možnost JSX.
29. Co jsou prostředí TypeScript a kdy je mám použít?
Kompilátor je informován o skutečném zdrojovém kódu, který se nachází jinde, prostřednictvím ambientních deklarací.
Pokud se pokusíme použít tyto zdrojové kódy za běhu, ale nejsou přítomny, přestane fungovat bez předchozího upozornění. Soubory podobné dokumentům jsou soubory ambientních deklarací.
Pokud se zdroj změní, musí být aktualizována dokumentace a pokud se nezmění soubor ambientního prohlášení, dojde k problémům s kompilátorem.
Navíc nám to umožňuje využít dobře známé JavaScriptové knihovny, které jsou již široce používány, jako je jQuery, AngularJS, NodeJS atd.
30. Co rozumíte abstraktní třídou v TypeScriptu?
Abstraktní třídy definují kontrakt objektu, aniž by umožňovaly přímou instanci objektu. Abstraktní třída by však také mohla nabídnout informace o implementaci svého člena.
V abstraktní třídě lze nalézt jeden nebo více abstraktních členů. Abstraktní členové nadtřídy pak musí mít implementaci poskytovanou všemi třídami, které rozšiřují abstraktní třídu.
Podívejme se na příklad TypeScript abstraktní třídy a na to, jak by ji mohla rozšířit jiná třída. Ačkoli obě třídy Car a Bike v příkladu níže rozšiřují třídu Vehicle, každá z nich implementuje funkci drive() jedinečným způsobem.
31. Co přesně je mapový soubor TypeScript?
Zdrojový mapový soubor s názvem TypeScript Map file obsahuje data o našich původních souborech. Zdrojové mapové soubory nebo soubory .map umožňují nástrojům mapovat mezi kódem JavaScript, který je výstupem, a zdrojovými soubory TypeScript, které jej vytvořily.
Navíc mohou být tyto soubory spotřebovány debuggery, což nám umožňuje ladit soubor TypeScript spíše než soubor JavaScript.
32. Co jsou v TypeScript tvrzení typu?
I když asertace typu funguje podobně jako typové obsazení v jiných jazycích, jako je C# a Java, neprovádí ověření typu ani přeuspořádání dat.
Zatímco asertace typu nemá žádný vliv na běhové prostředí, přetypování typu tuto podporu nabízí. Na druhou stranu výrazy typu jsou využívány pouze kompilátorem a poskytují návod, jak chceme, aby byl náš kód zkoumán.
Proč investovat do čističky vzduchu?
Na závěr doufáme, že vám tyto otázky k pohovoru s TypeScriptem pomohou, ať už jste vývojář, který se připravuje na pracovní pohovor, nebo náborový manažer, který se snaží najít nejlepšího uchazeče.
Pamatujte, že náborový proces zahrnuje více než jen technické znalosti. Abyste zajistili, že práci najdete (nebo na ni najdete vhodného uchazeče), minulé zkušenosti a měkké dovednosti jsou stejně důležité.
Spousta otázek pro rozhovor s TypeScriptem je otevřených a nemá jedinou správnou odpověď, takže to mějte na paměti.
Tazatelé se zajímají o zdůvodnění vašich odpovědí.
Buďte vždy připraveni na následné dotazy vysvětlující, jak jste ke své odpovědi dospěli. Popište svůj myšlenkový proces.
Napsat komentář