Sommario[Nascondere][Spettacolo]
- 1. Che cos'è esattamente TypeScript e in che cosa differisce da JavaScript?
- 2. Quali sono alcune caratteristiche degne di nota di TypeScript?
- 3. Quali sono alcuni vantaggi dell'utilizzo di TypeScript?
- 4. Quali sono alcuni svantaggi dell'utilizzo di TypeScript?
- 5. Quali sono esattamente i componenti di TypeScript?
- 6. Puoi spiegare le interfacce in TypeScript?
- 7. Cosa sono le variabili in TypeScript e come vengono dichiarate in vari modi?
- 8. Come si può utilizzare un sottoinsieme di un'interfaccia per generare un nuovo tipo?
- 9. Cosa intendi per "qualsiasi" tipo e quando dovrei utilizzarli?
- 10. In che modo TypeScript è un linguaggio con sintassi tipizzata statica opzionale?
- 11. In TypeScript, cosa significano i moduli?
- 12. Come funzionano le "enumerazioni" in TypeScript?
- 13. Cosa distingue un modulo interno da un modulo esterno?
- 14. Cosa significa la funzione anonima di TypeScript?
- 15. In TypeScript, cos'è uno spazio dei nomi e come si dichiara uno?
- 16. Quali modificatori di accesso supporta TypeScript?
- 17. TypeScript consente il sovraccarico delle funzioni?
- 18. In che modo TypeScript consente argomenti opzionali nelle funzioni?
- 19. In che modo var, let e const variano l'uno dall'altro?
- 20. In TypeScript, descrivi i decoratori?
- 21. In TypeScript, cosa significano Mixin?
- 22. Cosa sono esattamente gli alias di tipo in TypeScript?
- 23. Cosa significa il termine “Variabile di ambito”?
- 24. A cosa serve esattamente noImplicitAny?
- 25. In che modo i tipi di unione e intersezione variano l'uno dall'altro?
- 26. Come si definisce una parola chiave di dichiarazione TypeScript?
- 27. In TypeScript, cosa sono i generici?
- 28. Cosa significa JSX in TypeScript?
- 29. Cosa sono gli ambienti TypeScript e quando dovrei utilizzarli?
- 30. Cosa intendi per classe astratta in TypeScript?
- 31. Che cos'è esattamente un file di mappa TypeScript?
- 32. In TypeScript, cosa sono le asserzioni di tipo?
- Conclusione
Microsoft ha sviluppato e continua a supportare il linguaggio di programmazione TypeScript. Con l'aggiunta della tipizzazione statica come opzione, è un superset sintattico di JavaScript.
Il linguaggio di sviluppo di applicazioni su larga scala TypeScript compila JavaScript. Poiché TypeScript è un superset di JavaScript, i programmi scritti in JavaScript sono validi anche in TypeScript.
Ecco un elenco completo delle domande e risposte più tipiche dell'intervista per sviluppatori TypeScript nel caso tu ne stia partecipando a una.
1. Che cos'è esattamente TypeScript e in che cosa differisce da JavaScript?
Un superset di JavaScript, TypeScript compila in JavaScript standard. Da un punto di vista concettuale, TypeScript e JavaScript sono simili a SASS e CSS.
In altre parole, TypeScript è JavaScript ES6 con alcune funzionalità in più. JavaScript è un linguaggio di scripting più simile a Python, mentre TypeScript è un linguaggio orientato agli oggetti e tipizzato statico paragonabile a Java e C#.
Classi e interfacce fanno tutte parte del design orientato agli oggetti di TypeScript e l'inferenza del tipo è uno dei tanti strumenti disponibili grazie alla sua digitazione statica.
JavaScript è scritto in un file con estensione .js, mentre TypeScript è scritto in un file con estensione .ts.
Contrariamente a JavaScript, il codice TypeScript non può essere eseguito direttamente in un browser o su qualsiasi altra piattaforma e non è compreso dai browser. La piattaforma di destinazione eseguirà quindi il semplice JavaScript che è stato generato dai file .ts utilizzando il transpiler di TypeScript.
2. Quali sono alcune caratteristiche degne di nota di TypeScript?
- La digitazione statica è una funzionalità di TypeScript che aiuta il controllo del tipo durante la compilazione. Quindi, anche senza eseguire lo script, puoi rilevare errori nel codice mentre lo scrivi.
- Il DOM può essere modificato utilizzando TypeScript per aggiungere o rimuovere elementi.
- Qualsiasi sistema operativo, inclusi Windows, macOS e Linux, può avere il compilatore TypeScript installato.
- Classi, interfacce e moduli sono alcune delle funzionalità offerte da TypeScript. Può quindi creare codice orientato agli oggetti per lo sviluppo sia lato client che lato server.
- La maggior parte delle funzionalità di ECMAScript 2015 (ES 6, 7) sono già incluse in TypeScript, tra cui classe, interfaccia, funzioni freccia, ecc.
- Se stai utilizzando la digitazione dinamica di JavaScript, TypeScript supporta anche la digitazione statica opzionale.
3. Quali sono alcuni vantaggi dell'utilizzo di TypeScript?
- Qualsiasi motore o browser JavaScript può eseguire TypeScript poiché è veloce, facile da imparare e funziona rapidamente.
- Condivide la stessa sintassi e semantica di JavaScript.
- Ciò facilita la scrittura più rapida del codice front-end da parte degli sviluppatori back-end.
- Incorpora funzionalità ES6 ed ES7 che possono funzione in JavaScript Motori ES5 come Node.js.
- Le librerie JavaScript esistenti come Jquery, D3.js, ecc. sono supportate tramite il file di definizione, che ha l'estensione the.d.ts.
- Uno script JavaScript già esistente può richiamare il codice TypeScript. Si integra perfettamente anche con gli attuali framework e librerie JavaScript.
4. Quali sono alcuni svantaggi dell'utilizzo di TypeScript?
- La codifica con TypeScript richiede un lungo processo di compilazione.
- Non supporta classi astratte.
- La qualità dei file di definizione del tipo è un problema.
- Qualsiasi libreria di terze parti deve disporre di un file di definizione per poter essere utilizzata.
- È necessario un passaggio di compilazione per convertire TypeScript in JavaScript se vogliamo eseguire l'applicazione TypeScript nel browser.
- JavaScript è stato utilizzato dagli sviluppatori web per molti anni e TypeScript non fornisce nulla di nuovo.
5. Quali sono esattamente i componenti di TypeScript?
In TypeScript, ci sono tre categorie principali di componenti, tra cui:
- Lingua: include annotazioni per tipo, parole chiave e sintassi.
- Compilatore TypeScript: Le istruzioni TypeScript sono tradotte in JavaScript da questo compilatore (tsc).
- Servizio di linguaggio TypeScript: The Language Service offre app simili a editor come secondo livello in cima al processo di compilazione di base. Il set standard di operazioni di modifica comuni è supportato dal servizio linguistico.
6. Puoi spiegare le interfacce in TypeScript?
TypeScript utilizza le interfacce per specificare la sintassi delle entità. In altre parole, i moduli di dati come oggetti o una matrice di elementi possono essere descritti utilizzando interfacce. La parola chiave dell'interfaccia, il nome dell'interfaccia e la sua definizione vengono utilizzati per dichiarare le interfacce. Esaminiamo l'interfaccia di base di un oggetto utente.
Il tipo di una variabile può quindi essere impostato utilizzando l'interfaccia (simile a come si assegnano tipi primitivi a una variabile). Le proprietà dell'interfaccia saranno quindi soddisfatte da una variabile di tipo Utente.
Il tuo progetto TypeScript trae vantaggio dalle interfacce perché forniscono uniformità. Inoltre, le interfacce migliorano gli strumenti del tuo progetto migliorando le capacità di completamento automatico dell'IDE e garantendo che i giusti valori vengano forniti a costruttori e metodi.
7. Cosa sono le variabili in TypeScript e come vengono dichiarate in vari modi?
Una variabile è un'area di memoria specificatamente designata che viene utilizzata per contenere i valori. I due punti (:) vengono inseriti dopo il nome della variabile ed è seguito dal tipo quando si dichiara una variabile in TypeScript. Dichiariamo le variabili con la parola chiave var, proprio come in JavaScript.
Alcune linee guida devono essere osservate durante la dichiarazione di una variabile in Typescript:
- Il nome non può iniziare con un numero.
- Il nome della variabile deve contenere lettere o numeri.
- Il simbolo del dollaro ($) e il trattino basso (_) sono gli unici caratteri speciali consentiti in questo campo.
8. Come si può utilizzare un sottoinsieme di un'interfaccia per generare un nuovo tipo?
Fornendo un tipo o un'interfaccia esistente e scegliendo le chiavi da escludere dal nuovo tipo, è possibile creare un nuovo tipo in TypeScript utilizzando il tipo di utilità omit.
L'esempio che segue mostra come costruire un nuovo tipo chiamato UserPreview che si basa sull'interfaccia utente ma esclude la proprietà email.
9. Cosa intendi per "qualsiasi" tipo e quando dovrei utilizzarli?
A volte è necessario salvare un valore in una variabile, ma non si è sicuri del tipo di variabile in anticipo. Il valore potrebbe provenire dall'input dell'utente o da una richiesta API, ad esempio. Puoi assegnare qualsiasi tipo di valore a un tipo di variabile utilizzando il tipo "qualsiasi".
Quando il tipo di una variabile non è specificato in modo esplicito e il compilatore non è in grado di determinarlo dal contesto, TypeScript ritiene che la variabile sia di tipo any.
10. In che modo TypeScript è un linguaggio con sintassi tipizzata statica opzionale?
È possibile indicare al compilatore di ignorare il tipo di una variabile in TypeScript poiché è facoltativamente tipizzato in modo statico. Qualsiasi tipo di dati può essere utilizzato per assegnare qualsiasi tipo di valore alla variabile. Durante la compilazione, TypeScript non fornirà alcun controllo degli errori.
11. In TypeScript, cosa significano i moduli?
È efficace raggruppare insieme variabili rilevanti, funzioni, classi, interfacce, ecc. usando i moduli. Può essere utilizzato, ma non nell'ambito globale, solo all'interno del proprio ambito.
In sostanza, non è possibile accedere direttamente alle variabili, alle funzioni, alle classi e alle interfacce definite di un modulo dall'esterno del modulo.
La parola chiave export può essere usata per costruire un modulo, mentre la parola chiave import può essere usata per includere un modulo in un altro modulo.
12. Come funzionano le "enumerazioni" in TypeScript?
Un metodo per definire una raccolta di costanti denominate consiste nell'utilizzare enumerazioni o tipi enumerati. Queste strutture di dati hanno una lunghezza fissa e una raccolta di valori fissi.
Quando si rappresenta una raccolta di alternative per un determinato valore in TypeScript, le enumerazioni vengono spesso utilizzate per descrivere le possibilità utilizzando un insieme di coppie chiave/valore.
Vediamo un'illustrazione di un enum utilizzato per fornire una varietà di tipi di utenti.
Le enumerazioni vengono internamente convertite in normali oggetti JavaScript da TypeScript dopo la compilazione. L'uso di enum è quindi preferibile all'uso di diverse variabili const separate.
Il codice è indipendente dai tipi e più facile da comprendere grazie al raggruppamento fornito dalle enumerazioni.
13. Cosa distingue un modulo interno da un modulo esterno?
Modulo interno:
- I moduli interni erano una caratteristica della precedente iterazione di Typescript.
- Il nome e il corpo dei moduli interni sono definiti utilizzando ModuleDeclarations.
- Questi sono membri di altri moduli locali o esportati.
- Classi, interfacce, funzioni e variabili sono raggruppate in moduli interni, che possono essere esportati in un altro modulo.
Modulo esterno:
- Nella versione più recente, i moduli esterni sono indicati come moduli.
- Per crearli viene utilizzato un file di origine separato noto come modulo esterno e ognuno ha almeno una dichiarazione di importazione o esportazione.
- Nella versione più recente, i moduli esterni sono indicati come moduli.
- Le istruzioni interne delle definizioni dei moduli possono essere nascoste utilizzando moduli esterni, lasciando visibili solo i metodi e gli argomenti collegati alla variabile definita.
14. Cosa significa la funzione anonima di TypeScript?
Le funzioni classificate come anonime mancano di un nome di funzione come identificatore. Queste routine vengono definite dinamicamente durante il runtime. Come le normali funzioni, le funzioni anonime possono ricevere input e produrre risultati.
Una funzione anonima è in genere irraggiungibile una volta creata. Le variabili possono essere assegnate a una funzione anonima.
15. In TypeScript, cos'è uno spazio dei nomi e come si dichiara uno?
Lo spazio dei nomi raggruppa logicamente le funzionalità. Questi conservano internamente il codice legacy del dattiloscritto. Comprende i tratti e le cose con connessioni particolari.
Un altro nome per uno spazio dei nomi è un modulo interno. Interfacce, classi, funzioni e variabili possono essere tutte incluse in uno spazio dei nomi per fornire una raccolta di funzionalità connesse.
16. Quali modificatori di accesso supporta TypeScript?
Di seguito sono riportati esempi di come i modificatori di accesso pubblico, privato e protetto in TypeScript possono essere utilizzati per controllare l'accessibilità di un membro della classe:
- Pubblico: l'accesso è disponibile per ogni membro della classe, tutte le sue classi discendenti e ogni istanza della classe.
- Protetto: sono accessibili a tutti i membri della classe e a tutte le sue sottoclassi. Tuttavia, un'istanza di classe non può accedere.
- L'accesso privato ad essi è limitato ai soli membri della classe.
Poiché JavaScript è utile, se non viene fornito un modificatore di accesso, si presume che sia pubblico.
17. TypeScript consente il sovraccarico delle funzioni?
Sì, l'overloading delle funzioni è supportato da TypeScript. Ma ora che viene fatto è strano. Pertanto, durante l'overloading con TypeScript, c'è solo un'implementazione con una varietà di firme.
Mentre la seconda firma contiene un parametro di tipo testo, la prima firma ha solo un parametro di tipo numero. La terza funzione, che include un argomento di tipo any, contiene l'implementazione effettiva.
L'implementazione determina quindi il tipo del parametro fornito ed esegue una sezione di codice separata in conformità con tale determinazione.
18. In che modo TypeScript consente argomenti opzionali nelle funzioni?
Contrariamente a JavaScript, se si tenta di chiamare una funzione senza specificare la quantità e il tipo di parametri precisi come indicato nella firma della funzione, il compilatore TypeScript genererà un errore.
È possibile utilizzare parametri facoltativi utilizzando il simbolo del punto interrogativo ('?') per aggirare questo problema. Mostra che i parametri opzionali possono essere indicati aggiungendo un "?" a coloro che possono o non possono ricevere un valore.
19. In che modo var, let e const variano l'uno dall'altro?
TypeScript offre tre diversi modi per dichiarare una variabile, ciascuno con un'applicazione suggerita.
var: Dichiara una variabile globale o con ambito di funzione con il comportamento delle variabili var di JavaScript e le linee guida sull'ambito. Le variabili non hanno bisogno che i loro valori siano impostati quando vengono dichiarate.
permettere: dichiara una variabile di blocco con ambito locale. Lascia che le variabili non abbiano bisogno che il valore di una variabile sia impostato quando vengono dichiarate. Il termine "variabile locale con ambito di blocco" si riferisce a una variabile a cui è possibile accedere solo dall'interno del blocco in cui è contenuta, come una funzione, un blocco if/else o un ciclo. Le variabili Let non possono essere lette o scritte prima di essere dichiarate, contrariamente a var.
const: Dichiara un valore per una costante con ambito blocco che non può essere modificata dopo l'inizializzazione. Le variabili const devono essere inizializzate prima di essere dichiarate. Per le variabili che rimangono costanti durante la loro intera esistenza, questo è ottimale.
20. In TypeScript, descrivi i decoratori?
Una funzione di accesso, una proprietà, un parametro, una classe, una funzione o un decoratore possono essere dichiarati in un modo specifico come decoratori. I decoratori sono funzioni con il prefisso @expression che verranno invocate in fase di esecuzione con i dettagli sulla dichiarazione decorata.
L'espressione deve valutare una funzione affinché i decoratori funzionino.
I decoratori TypeScript forniscono l'obiettivo di aggiungere in modo dichiarativo annotazioni e informazioni al codice corrente.
Nel nostro file tsconfig.json o nella riga di comando, è necessario attivare l'opzione del compilatore experimentalDecorators per abilitare il supporto sperimentale per i decoratori:
21. In TypeScript, cosa significano Mixin?
I mixin sono una tecnica per creare classi da parti riutilizzabili in Javascript e mescolare classi parziali per creare classi complete più complesse.
Il concetto è semplice: la funzione B accetta la classe A e restituisce una nuova classe con la sua funzionalità aggiunta, al contrario della classe A che estende la classe B per ottenere la sua funzionalità. La funzione B in questo caso è un mixin.
22. Cosa sono esattamente gli alias di tipo in TypeScript?
Gli alias di tipo cambiano il nome di un tipo. Gli alias di tipo, come le interfacce, possono essere usati per nominare primitive, unioni, tuple e qualsiasi altro tipo che altrimenti dovrebbe essere definito manualmente.
L'alias non crea un nuovo tipo; piuttosto, cambia il nome di un tipo esistente. L'aliasing di una primitiva non è molto pratico, sebbene possa essere utile per la documentazione.
Gli alias di tipo, come le interfacce, possono essere universali; tutto quello che devi fare è aggiungere parametri di tipo e usarli sul lato destro della dichiarazione alias.
23. Cosa significa il termine “Variabile di ambito”?
JavaScript supporta le variabili di ambito sia locali che globali. L'ambito è una raccolta di oggetti, variabili e funzioni.
Un esempio di dichiarazione di una variabile in due ambiti è:
- Variabile con ambito locale: funge da oggetto funzione da utilizzare all'interno delle funzioni.
- Variabile con ambito globale: questo oggetto finestra può essere utilizzato sia all'interno che all'esterno delle funzioni
24. A cosa serve esattamente noImplicitAny?
Il trattamento da parte del compilatore TypeScript dei tipi impliciti del tuo progetto è alterato dalla proprietà noImplicitAny nel file di configurazione tsconfig.json per i progetti TypeScript.
Il flag noImplicitAny può essere impostato su true o false ed è sempre modificabile dopo l'inizializzazione. Dato che ogni progetto è unico, non esiste una risposta giusta o sbagliata su quale dovrebbe essere questo numero.
Comprendere le distinzioni tra gli stati di attivazione e disattivazione della bandiera può aiutarti a selezionare quale impostazione utilizzare per la bandiera.
Il compilatore non determina il tipo di una variabile in base a come viene utilizzata se il flag noImplicitAny è impostato su false (impostazione predefinita). Il tipo è invece impostato su any per impostazione predefinita dal compilatore.
Tuttavia, se l'opzione noImplicitAny è impostata su true, il compilatore farà uno sforzo per dedurre il tipo e genererà un errore in fase di compilazione se non è in grado di farlo.
25. In che modo i tipi di unione e intersezione variano l'uno dall'altro?
Invece di generare nuovi tipi da zero, unioni e tipi di intersezione consentono di comporre e combinare tipi esistenti. Sia l'unione che l'intersezione hanno qualità distintive che le rendono perfette per determinati casi d'uso.
Un tipo che può essere di diversi tipi viene definito tipo di unione. L'elenco dei tipi che verranno utilizzati nel nuovo tipo viene suddiviso utilizzando | (barra verticale) nei tipi di unione.
Diamo un'occhiata a un'illustrazione:
D'altra parte, l'intersezione è definita come un tipo che unisce molti tipi in uno solo, integrando tutte le caratteristiche di ogni tipo per formare un nuovo tipo. L'elenco dei tipi che verranno uniti è diviso in intersezioni utilizzando il simbolo &.
Esaminiamo un'illustrazione:
26. Come si definisce una parola chiave di dichiarazione TypeScript?
Non ci sono file di dichiarazione TypeScript nelle librerie o nei framework JavaScript. Tuttavia, è necessario utilizzare la parola chiave dichiara per poterla utilizzare nel file TypeScript senza riscontrare errori di compilazione.
Quando si desidera specificare una variabile che potrebbe già esistere da qualche altra parte, utilizzare la parola chiave dichiara nelle dichiarazioni e nei metodi ambientali.
27. In TypeScript, cosa sono i generici?
Uno strumento chiamato TypeScript Generics offre un metodo per la produzione di parti riutilizzabili. Invece di lavorare con una sola forma di dati, può sviluppare componenti che possono operare con una gamma di tipi di dati.
Inoltre, offre la sicurezza del tipo senza sacrificare l'efficienza o la produttività. Possiamo costruire classi generiche, funzioni generiche, metodi generici e interfacce generiche grazie ai generici.
I generici sono raccolte altamente tipizzate poiché un parametro di tipo viene scritto tra parentesi aperte () e chiuse (>). Fa uso di un tipo univoco di variabile di tipo chiamata T che sta per tipi.
28. Cosa significa JSX in TypeScript?
JSX è un JavaScript legittimo che può essere convertito da una sintassi simile a XML incorporabile. Insieme al framework React, JSX ha guadagnato popolarità.
La compilazione diretta, la verifica del tipo e l'incorporamento di JSX in JavaScript sono supportati da TypeScript. Devi dare al tuo file un'estensione.tsx e attivare l'opzione JSX se desideri utilizzarla.
29. Cosa sono gli ambienti TypeScript e quando dovrei utilizzarli?
Il compilatore viene informato sul codice sorgente reale che si trova altrove tramite le dichiarazioni ambientali.
Si interromperà senza alcun preavviso se tentiamo di utilizzare questi codici sorgente in fase di esecuzione ma non sono presenti. I file simili a documenti sono file di dichiarazioni ambientali.
Se l'origine cambia, la documentazione deve essere aggiornata e se il file di dichiarazione ambientale non viene modificato si verificheranno problemi con il compilatore.
Inoltre, ci consente di sfruttare note librerie JavaScript che sono già ampiamente utilizzate, come jQuery, AngularJS, NodeJS, ecc.
30. Cosa intendi per classe astratta in TypeScript?
Le classi astratte definiscono il contratto di un oggetto senza consentire l'istanziazione diretta dell'oggetto. Tuttavia, una classe astratta potrebbe anche offrire informazioni sull'implementazione del suo membro.
Uno o più membri astratti possono essere trovati in una classe astratta. I membri astratti della superclasse devono quindi avere un'implementazione fornita da qualsiasi classe che estende la classe astratta.
Diamo un'occhiata a un esempio TypeScript di una classe astratta e come una classe diversa potrebbe estenderla. Sebbene entrambe le classi Car e Bike nell'esempio seguente estendano la classe Vehicle, ciascuna implementa la funzione drive() in un modo univoco.
31. Che cos'è esattamente un file di mappa TypeScript?
Un file di mappa di origine chiamato file di mappa TypeScript contiene dati sui nostri file originali. I file di mappa di origine, o file .map, consentono agli strumenti di eseguire il mapping tra il codice JavaScript che viene generato e i file di origine TypeScript che lo hanno prodotto.
Inoltre, questi file possono essere utilizzati dai debugger, consentendoci di eseguire il debug del file TypeScript anziché del file JavaScript.
32. In TypeScript, cosa sono le asserzioni di tipo?
Sebbene l'asserzione del tipo funzioni in modo simile al typecasting in altri linguaggi come C# e Java, non esegue la verifica del tipo o il riarrangiamento dei dati.
Sebbene l'asserzione del tipo non abbia alcun effetto sul runtime, il cast del tipo offre questo supporto. Le asserzioni di tipo, d'altra parte, vengono utilizzate solo dal compilatore e forniscono indicazioni su come vogliamo che il nostro codice venga esaminato.
Conclusione
In conclusione, speriamo che queste domande del colloquio di TypeScript ti siano utili, sia che tu sia uno sviluppatore che si prepara per un colloquio di lavoro o un responsabile delle assunzioni che cerca di trovare il candidato migliore.
Ricorda che il processo di reclutamento non coinvolge solo competenze tecniche. Per assicurarti di ottenere (o individuare il candidato adatto per) il lavoro, le esperienze passate e le competenze trasversali sono ugualmente cruciali.
Molte domande del colloquio di TypeScript sono aperte e non hanno una sola risposta giusta, quindi tienilo a mente.
Gli intervistatori sono interessati alla logica dietro le tue risposte.
Sii sempre pronto per le domande di follow-up che spiegano come sei arrivato alla tua risposta. Descrivi il tuo processo di pensiero.
Lascia un Commento