Cuprins[Ascunde][Spectacol]
- 1. Ce este exact TypeScript și cum este diferit de JavaScript?
- 2. Care sunt unele caracteristici notabile ale TypeScript?
- 3. Care sunt unele avantaje ale utilizării TypeScript?
- 4. Care sunt unele dezavantaje ale utilizării TypeScript?
- 5. Care sunt exact componentele TypeScript?
- 6. Puteți explica interfețele în TypeScript?
- 7. Ce sunt variabilele în TypeScript și cum sunt ele declarate în diferite moduri?
- 8. Cum poate fi folosit un subset al unei interfețe pentru a genera un nou tip?
- 9. Ce înțelegi prin „orice” tipuri și când ar trebui să le folosesc?
- 10. Cum este TypeScript un limbaj cu sintaxă opțională tip static?
- 11. În TypeScript, ce înseamnă module?
- 12. Cum funcționează „enumări” în TypeScript?
- 13. Ce diferențiază un modul intern de un modul extern?
- 14. Ce înseamnă funcția anonimă a lui TypeScript?
- 15. În TypeScript, ce este un spațiu de nume și cum îl declari?
- 16. Ce modificatori de acces acceptă TypeScript?
- 17. TypeScript permite supraîncărcarea funcțiilor?
- 18. Cum permite TypeScript argumente opționale în funcții?
- 19. Cum variază var, let și const unul de altul?
- 20. În TypeScript, descrieți decoratorii?
- 21. În TypeScript, ce înseamnă Mixins?
- 22. Ce sunt exact aliasurile de tip în TypeScript?
- 23. Ce înseamnă termenul „Variabilă de aplicare”?
- 24. Pentru ce anume este folosit noImplicitAny?
- 25. Cum diferă tipurile de unire și intersecție una de alta?
- 26. Cum definiți un cuvânt cheie TypeScript Declare?
- 27. În TypeScript, ce sunt genericele?
- 28. Ce înseamnă JSX în TypeScript?
- 29. Ce sunt TypeScript Ambients și când ar trebui să le folosesc?
- 30. Ce înțelegeți prin clasă abstractă în TypeScript?
- 31. Ce este exact un fișier TypeScript Map?
- 32. În TypeScript, ce sunt aserțiunile de tip?
- Concluzie
Microsoft a dezvoltat și continuă să sprijine limbajul de programare TypeScript. Cu adăugarea tastării statice ca opțiune, este un superset sintactic de JavaScript.
Limbajul de dezvoltare a aplicațiilor la scară largă TypeScript compilă JavaScript. Deoarece TypeScript este un superset de JavaScript, programele scrise în JavaScript sunt valabile și în TypeScript.
Iată o listă cuprinzătoare a celor mai tipice întrebări și răspunsuri la interviu pentru dezvoltatori TypeScript, în cazul în care participați la una.
1. Ce este exact TypeScript și cum este diferit de JavaScript?
Un superset de JavaScript, TypeScript se compilează în JavaScript standard. Din punct de vedere conceptual, TypeScript și JavaScript sunt similare cu SASS și CSS.
Cu alte cuvinte, TypeScript este JavaScript ES6 cu câteva capabilități suplimentare. JavaScript este un limbaj de scriptare mai asemănător cu Python, în timp ce TypeScript este un limbaj orientat pe obiecte, tipizat static, comparabil cu Java și C#.
Clasele și interfețele fac toate parte din designul orientat pe obiecte al TypeScript, iar inferența de tip este unul dintre numeroasele instrumente disponibile datorită tastării sale statice.
JavaScript este scris într-un fișier cu extensia .js, în timp ce TypeScript este scris într-un fișier cu extensia .ts.
Spre deosebire de JavaScript, codul TypeScript nu poate fi rulat direct într-un browser sau pe orice altă platformă și nu este înțeles de browsere. Platforma țintă va rula apoi JavaScript simplu care a fost generat din fișierele .ts folosind transpiler-ul TypeScript.
2. Care sunt unele caracteristici notabile ale TypeScript?
- Tastarea statică este o caracteristică a TypeScript care ajută la verificarea tipului în timpul compilării. Deci, chiar și fără a executa scriptul, puteți detecta greșelile din cod pe măsură ce îl scrieți.
- DOM-ul poate fi modificat folosind TypeScript pentru a adăuga sau elimina elemente.
- Orice sistem de operare, inclusiv Windows, macOS și Linux, poate avea compilatorul TypeScript instalat.
- Clasele, interfețele și modulele sunt câteva dintre funcționalitățile oferite de TypeScript. Astfel, poate crea cod orientat pe obiecte atât pentru dezvoltarea pe partea client, cât și pe partea serverului.
- Majoritatea caracteristicilor ECMAScript 2015 (ES 6, 7) sunt deja incluse în TypeScript, inclusiv clasă, interfață, funcții Arrow etc.
- Dacă utilizați tastarea dinamică JavaScript, TypeScript acceptă și tastarea statică opțională.
3. Care sunt unele avantaje ale utilizării TypeScript?
- Orice motor sau browser JavaScript poate executa TypeScript, deoarece este rapid, ușor de învățat și rulează rapid.
- Împărtășește aceeași sintaxă și semantică ca JavaScript.
- Acest lucru facilitează scrierea mai rapidă a codului front-end de către dezvoltatorii backend.
- Încorporează capabilități ES6 și ES7 care pot funcție în JavaScript Motoare ES5 precum Node.js.
- Bibliotecile JavaScript existente precum Jquery, D3.js etc. sunt acceptate prin fișierul Definition, care are extensia.d.ts.
- Un script JavaScript care există deja poate invoca codul TypeScript. De asemenea, se integrează perfect cu cadrele și bibliotecile JavaScript actuale.
4. Care sunt unele dezavantaje ale utilizării TypeScript?
- Codarea cu TypeScript necesită un proces lung de compilare.
- Nu acceptă clase care sunt abstracte.
- Calitatea fișierelor de definire a tipurilor este o problemă.
- Orice bibliotecă terță parte trebuie să aibă un fișier de definiție pentru a fi utilizată.
- Este necesar un pas de compilare pentru a converti TypeScript în JavaScript dacă dorim să rulăm aplicația TypeScript în browser.
- JavaScript a fost folosit de dezvoltatorii web de mulți ani, iar TypeScript nu oferă nimic nou.
5. Care sunt exact componentele TypeScript?
În TypeScript, există trei categorii principale de componente, inclusiv:
- Limbă: include adnotări pentru tip, cuvinte cheie și sintaxă.
- Compilatorul TypeScript: Instrucțiunile TypeScript sunt traduse în JavaScript de către acest compilator (tsc).
- Serviciul de limbaj TypeScript: Serviciul de limbă oferă aplicații asemănătoare editorului ca un al doilea strat peste procesul de bază al compilatorului. Setul standard de operațiuni de editare comune este acceptat de serviciul lingvistic.
6. Puteți explica interfețele în TypeScript?
TypeScript folosește interfețe pentru a specifica sintaxa entităților. Cu alte cuvinte, formele de date precum obiectele sau o serie de elemente pot fi descrise folosind interfețe. Cuvântul cheie interfață, numele interfeței și definiția acesteia sunt folosite pentru a declara interfețele. Să examinăm interfața de bază a unui obiect utilizator.
Tipul unei variabile poate fi apoi setat folosind interfața (similar cu modul în care atribuiți tipuri primitive unei variabile). Proprietățile interfeței vor fi apoi îndeplinite de o variabilă de tip User.
Proiectul dvs. TypeScript beneficiază de interfețe deoarece oferă uniformitate. În plus, interfețele îmbunătățesc instrumentele proiectului prin îmbunătățirea capacităților de completare automată IDE și garantând că valorile corecte sunt furnizate constructorilor și metodelor.
7. Ce sunt variabilele în TypeScript și cum sunt ele declarate în diferite moduri?
O variabilă este o zonă de memorie special desemnată care este utilizată pentru a păstra valori. După numele variabilei sunt plasate două puncte (:) și sunt urmate de tip atunci când se declară o variabilă în TypeScript. Declaram variabile cu cuvântul cheie var, la fel ca în JavaScript.
Anumite linii directoare trebuie respectate atunci când declarați o variabilă în Typescript:
- Numele nu poate începe cu un număr.
- Numele variabilei trebuie să conțină litere sau cifre.
- Simbolul dolarului ($) și liniuța de subliniere (_) sunt singurele caractere speciale care sunt permise în acest câmp.
8. Cum poate fi folosit un subset al unei interfețe pentru a genera un nou tip?
Prin furnizarea unui tip sau a unei interfețe existente și alegând cheile care vor fi excluse din noul tip, puteți crea un tip nou în TypeScript utilizând tipul de utilitar omit.
Exemplul care urmează demonstrează cum să construiți un nou tip numit UserPreview care se bazează pe interfața Utilizator, dar exclude proprietatea de e-mail.
9. Ce înțelegi prin „orice” tipuri și când ar trebui să le folosesc?
Uneori trebuie să salvați o valoare într-o variabilă, dar nu sunteți sigur de tipul variabilei în prealabil. Valoarea ar putea proveni din intrarea utilizatorului sau dintr-o solicitare API, de exemplu. Puteți da orice tip de valoare unui tip de variabilă folosind tipul „orice”.
Când tipul unei variabile nu este specificat în mod explicit și compilatorul nu îl poate determina din context, TypeScript consideră că variabila este de tip oricare.
10. Cum este TypeScript un limbaj cu sintaxă opțională tip static?
Este posibil să instruiți compilatorul să ignore tipul unei variabile în TypeScript, deoarece este opțional tipizat static. Orice tip de date poate fi utilizat pentru a atribui orice fel de valoare variabilei. Când este compilat, TypeScript nu va furniza nicio verificare a erorilor.
11. În TypeScript, ce înseamnă module?
Este eficient să grupați variabile relevante, funcții, clase, interfețe etc. folosind module. Poate fi folosit, dar nu în sfera globală, doar în sfera proprie.
În esență, variabilele, funcțiile, clasele și interfețele definite ale unui modul nu pot fi accesate direct din afara modulului.
Cuvântul cheie export poate fi folosit pentru a construi un modul, în timp ce cuvântul cheie import poate fi folosit pentru a include un modul într-un alt modul.
12. Cum funcționează „enumări” în TypeScript?
O metodă de definire a unei colecții de constante denumite este utilizarea enumărilor sau a tipurilor enumerate. Aceste structuri de date au o lungime fixă și o colecție de valori fixe.
Când reprezintă o colecție de alternative pentru o anumită valoare în TypeScript, enumerarile sunt frecvent utilizate pentru a descrie posibilitățile folosind un set de perechi cheie/valoare.
Să vedem o ilustrare a unei enumerari utilizate pentru a oferi o varietate de tipuri de utilizatori.
Enumerările sunt convertite intern în obiecte JavaScript obișnuite de TypeScript după compilare. Prin urmare, utilizarea enumărilor este preferabilă utilizării mai multor variabile const separate.
Codul dvs. este sigur de tip și mai ușor de înțeles datorită grupării pe care o oferă enumerarile.
13. Ce diferențiază un modul intern de un modul extern?
Modul intern:
- Modulele interne au fost o caracteristică a iterației anterioare a lui Typescript.
- Numele și corpul modulelor interne sunt definite folosind ModuleDeclarations.
- Aceștia sunt membri ai altor module care sunt locale sau exportate.
- Clasele, interfețele, funcțiile și variabilele sunt grupate împreună în module interne, care pot fi exportate într-un alt modul.
Modul extern:
- În cea mai recentă versiune, modulele externe sunt denumite module.
- Pentru a le crea este folosit un fișier sursă separat, cunoscut sub numele de modul extern, și fiecare are cel puțin o declarație de import sau export.
- În cea mai recentă versiune, modulele externe sunt denumite module.
- Declarațiile interne ale definițiilor modulelor pot fi ascunse folosind module externe, lăsând vizibile doar metodele și argumentele conectate la variabila definită.
14. Ce înseamnă funcția anonimă a lui TypeScript?
Funcțiile clasificate ca anonime nu au un nume de funcție ca identificator. Aceste rutine sunt definite dinamic în timpul rulării. La fel ca funcțiile obișnuite, funcțiile anonime pot prelua intrări și pot produce rezultate.
O funcție anonimă este de obicei inaccesibilă odată ce a fost creată. Variabilele pot fi atribuite unei funcții anonime.
15. În TypeScript, ce este un spațiu de nume și cum îl declari?
Spațiul de nume grupează în mod logic funcționalitățile. Acestea păstrează intern codul moștenit dactilografiat. Ea cuprinde trăsăturile și lucrurile cu conexiuni speciale.
Un alt nume pentru un spațiu de nume este un modul intern. Interfețele, clasele, funcțiile și variabilele pot fi toate incluse într-un spațiu de nume pentru a oferi o colecție de funcționalități conectate.
16. Ce modificatori de acces acceptă TypeScript?
Următoarele sunt exemple despre modul în care modificatorii de acces public, privat și protejat din TypeScript pot fi utilizați pentru a controla accesibilitatea unui membru al clasei:
- Public – Accesul este disponibil pentru fiecare membru al clasei, toate clasele sale descendente și fiecare instanță a clasei.
- Protejat – Sunt accesibile fiecărui membru al clasei și tuturor subclaselor sale. Cu toate acestea, o instanță de clasă nu poate accesa.
- Accesul privat la acestea este limitat numai membrilor clasei.
Deoarece JavaScript este la îndemână, dacă nu este dat un modificator de acces, se presupune că este public.
17. TypeScript permite supraîncărcarea funcțiilor?
Da, supraîncărcarea funcțiilor este acceptată de TypeScript. Dar acum se face este ciudat. Prin urmare, atunci când supraîncărcați cu TypeScript, există o singură implementare cu o varietate de semnături.
În timp ce a doua semnătură conține un parametru de tip text, prima semnătură are doar un parametru de tip număr. A treia funcție, care include un argument de tip any, conține implementarea efectivă.
Implementarea determină apoi tipul parametrului furnizat și rulează o secțiune separată de cod în conformitate cu acea determinare.
18. Cum permite TypeScript argumente opționale în funcții?
Spre deosebire de JavaScript, dacă încercați să apelați o funcție fără a specifica cantitatea și tipurile precise de parametri, așa cum este indicat în semnătura funcției sale, compilatorul TypeScript va genera o eroare.
Puteți utiliza parametrii opționali utilizând simbolul semnului de întrebare („?”) pentru a rezolva această problemă. Arată că parametrii opționali pot fi indicați prin adăugarea unui „?” celor care pot primi sau nu o valoare.
19. Cum variază var, let și const unul de altul?
Trei moduri diferite de a declara o variabilă sunt oferite de TypeScript, fiecare cu o aplicație sugerată.
a fost: Declara o variabilă globală sau în funcție de sfera de aplicare cu comportamentul variabilelor var din JavaScript și ghidurile de definire a domeniului. Variabilele nu au nevoie ca valorile lor să fie setate atunci când sunt declarate.
lăsa: declară o variabilă de bloc cu scop local. Lasă variabilele să nu aibă nevoie de valoarea unei variabile pentru a fi setată atunci când sunt declarate. Termenul „variabilă locală în domeniul blocului” se referă la o variabilă care poate fi accesată numai din interiorul blocului în care este conținută, cum ar fi o funcție, un bloc if/else sau o buclă. Lasă variabilele să nu poată fi citite sau scrise înainte de a fi declarate, spre deosebire de var.
CONST: Declara o valoare pentru o constanta de bloc care nu poate fi modificata dupa ce a fost initializata. Variabilele const trebuie inițializate înainte de a fi declarate. Pentru variabilele care rămân constante pe toată durata existenței lor, acest lucru este optim.
20. În TypeScript, descrieți decoratorii?
Un accesoriu, o proprietate, un parametru, o clasă, o funcție sau un decorator pot fi declarati într-un mod specific ca decoratori. Decoratorii sunt funcții cu prefixul @expression care vor fi invocate în timpul execuției cu detalii despre declarația decorată.
Expresia trebuie să evalueze o funcție pentru ca decoratorii să funcționeze.
Decoratorii TypeScript oferă scopul de a adăuga în mod declarativ adnotări și informații la codul curent.
În fișierul nostru tsconfig.json sau pe linia de comandă, trebuie să activați opțiunea de compilare experimentalDecorators pentru a activa suportul experimental pentru decoratori:
21. În TypeScript, ce înseamnă Mixins?
Mixin-urile sunt o tehnică de creare a claselor din părți reutilizabile în Javascript și de amestecare a claselor parțiale pentru a crea clase complete mai complexe.
Conceptul este simplu: funcția B acceptă clasa A și returnează o nouă clasă cu funcționalitatea adăugată, spre deosebire de clasa A care extinde clasa B pentru a-și obține funcționalitatea. Funcția B în acest caz este un mixin.
22. Ce sunt exact aliasurile de tip în TypeScript?
Aliasurile de tip schimbă numele unui tip. Aliasurile de tip, precum interfețele, pot fi folosite pentru a denumi primitive, uniuni, tupluri și orice alte tipuri care altfel ar trebui definite manual.
Aliasarea nu creează un tip nou; mai degrabă, schimbă numele unui tip existent. Aliasarea unei primitive nu este chiar practică, deși poate fi benefică pentru documentare.
Aliasurile de tip, precum interfețele, pot fi universale; tot ce trebuie să faci este să adaugi parametri de tip și să-i folosești în partea dreaptă a declarației alias.
23. Ce înseamnă termenul „Variabilă de aplicare”?
JavaScript acceptă atât variabilele locale, cât și cele globale. Domeniul de aplicare este o colecție de obiecte, variabile și funcții.
Un exemplu de declarare a unei variabile în două domenii este:
- Variabilă cu domeniu local – Servește ca obiect funcție pentru utilizare în cadrul funcțiilor.
- Variabilă cu sferă globală – Acest obiect fereastră poate fi utilizat atât în interiorul cât și în afara funcțiilor
24. Pentru ce anume este folosit noImplicitAny?
Tratamentul de către compilatorul TypeScript a oricăror tipuri implicite ale proiectului este modificat de proprietatea noImplicitAny din fișierul de configurare tsconfig.json pentru proiectele TypeScript.
Indicatorul noImplicitAny poate fi setat la adevărat sau fals și este întotdeauna modificabil după inițializare. Având în vedere că fiecare proiect este unic, nu există un răspuns corect sau greșit cu privire la care ar trebui să fie acest număr.
Înțelegerea distincțiilor dintre stările de pornire și oprire ale steagului vă poate ajuta să selectați ce setare să utilizați pentru steag.
Compilatorul nu determină tipul unei variabile în funcție de modul în care este utilizată dacă indicatorul noImplicitAny este setat la false (implicit). Tipul este în schimb setat la orice în mod implicit de către compilator.
Totuși, dacă opțiunea noImplicitAny este setată la true, compilatorul va face un efort pentru a deduce tipul și va genera o eroare la timp de compilare dacă nu poate face acest lucru.
25. Cum diferă tipurile de unire și intersecție una de alta?
În loc să generați noi tipuri de la zero, uniunile și tipurile de intersecție vă permit să compuneți și să amestecați tipurile existente. Atât unirea, cât și intersecția au calități distinctive care le fac perfecte pentru anumite cazuri de utilizare.
Un tip care poate fi unul din mai multe tipuri este denumit tip uniune. Lista de tipuri care vor fi utilizate în noul tip este împărțită folosind | (bară verticală) simbol în tipuri de uniuni.
Să ne uităm la o ilustrație:
Pe de altă parte, intersecția este definită ca un tip care îmbină multe tipuri într-unul singur, integrând toate caracteristicile fiecărui tip pentru a forma un nou tip. Lista de tipuri care vor fi îmbinate este împărțită în intersecții folosind simbolul &.
Să examinăm o ilustrație:
26. Cum definiți un cuvânt cheie TypeScript Declare?
Nu există fișiere de declarație TypeScript în bibliotecile sau cadrele JavaScript. Cu toate acestea, trebuie să utilizați cuvântul cheie declare pentru a le utiliza în fișierul TypeScript fără a întâmpina erori de compilare.
Când doriți să specificați o variabilă care ar putea exista deja în altă parte, utilizați cuvântul cheie declare în declarațiile și metodele ambientale.
27. În TypeScript, ce sunt genericele?
Un instrument numit TypeScript Generics oferă o metodă de producere a pieselor reutilizabile. În loc să lucreze cu o singură formă de date, poate dezvolta componente care pot funcționa cu o gamă largă de tipuri de date.
În plus, oferă siguranță de tip fără a sacrifica eficiența sau productivitatea. Putem construi clase generice, funcții generice, metode generice și interfețe generice datorită genericelor.
Genericurile sunt colecții foarte tipizate, deoarece un parametru de tip este scris între paranteze deschise () și închise (>). Utilizează un tip unic de variabilă de tip numită T, care reprezintă tipuri.
28. Ce înseamnă JSX în TypeScript?
JSX este un JavaScript legitim care poate fi convertit dintr-o sintaxă asemănătoare XML încorporabilă. Odată cu framework-ul React, JSX a câștigat popularitate.
Compilarea directă, verificarea tipului și încorporarea JSX în JavaScript sunt acceptate de TypeScript. Trebuie să dați fișierului dumneavoastră extensia a.tsx și să activați opțiunea JSX dacă doriți să o utilizați.
29. Ce sunt TypeScript Ambients și când ar trebui să le folosesc?
Compilatorul este informat despre codul sursă real care se află în altă parte prin declarații ambientale.
Se va întrerupe fără nicio notificare prealabilă dacă încercăm să utilizăm aceste coduri sursă în timpul execuției, dar ele nu sunt prezente. Fișierele asemănătoare documentelor sunt fișiere de declarații ambientale.
Dacă sursa se modifică, documentația trebuie actualizată și vor apărea probleme ale compilatorului dacă fișierul declarației ambientale nu este modificat.
În plus, ne permite să folosim biblioteci JavaScript binecunoscute care sunt deja utilizate pe scară largă, cum ar fi jQuery, AngularJS, NodeJS etc.
30. Ce înțelegeți prin clasă abstractă în TypeScript?
Clasele abstracte definesc contractul unui obiect fără a permite instanțierea directă a obiectului. Cu toate acestea, o clasă abstractă ar putea oferi și informații despre implementarea membrilor săi.
Unul sau mai mulți membri abstracti pot fi găsiți într-o clasă abstractă. Membrii abstracti ai superclasei trebuie să aibă apoi o implementare furnizată de orice clase care extind clasa abstractă.
Să aruncăm o privire la un exemplu TypeScript al unei clase abstracte și la modul în care o clasă diferită o poate extinde. Deși atât clasele Car, cât și Bike din exemplul de mai jos extind clasa Vehicle, fiecare implementează funcția drive() într-un mod unic.
31. Ce este exact un fișier TypeScript Map?
Un fișier de hartă sursă numit fișier TypeScript Map conține date despre fișierele noastre originale. Fișierele hărți sursă, sau fișierele .map, permit instrumentelor să se mapeze între codul JavaScript care este scos și fișierele sursă TypeScript care l-au produs.
În plus, aceste fișiere pot fi consumate de depanatorii, permițându-ne să depanăm fișierul TypeScript mai degrabă decât fișierul JavaScript.
32. În TypeScript, ce sunt aserțiunile de tip?
În timp ce afirmarea tipului funcționează similar tipăririi în alte limbi precum C# și Java, nu efectuează verificarea tipului sau rearanjarea datelor.
În timp ce afirmația de tip nu are niciun efect asupra timpului de execuție, tipul de turnare oferă acest suport. Aserțiunile de tip, pe de altă parte, sunt utilizate doar de compilator și oferă îndrumări cu privire la modul în care dorim să fie examinat codul nostru.
Concluzie
În concluzie, sperăm că aceste întrebări de interviu TypeScript vă vor fi de ajutor, indiferent dacă sunteți un dezvoltator care se pregătește pentru un interviu de angajare sau un manager de angajare care încearcă să găsească cel mai bun candidat.
Rețineți că procesul de recrutare implică mai mult decât expertiză tehnică. Pentru a vă asigura că obțineți (sau găsiți solicitantul potrivit pentru) jobul, experiențele anterioare și abilitățile soft sunt la fel de esențiale.
O mulțime de întrebări de interviu TypeScript sunt deschise și nu au un singur răspuns corect, așa că rețineți asta.
Intervievatorii sunt interesați de rațiunea din spatele răspunsurilor dumneavoastră.
Fiți întotdeauna pregătit pentru întrebări ulterioare care explică cum ați ajuns la răspunsul dvs. Descrieți procesul de gândire.
Lasă un comentariu