Table des matières[Cacher][Montrer]
- 1. Qu'est-ce que TypeScript et en quoi est-il différent de JavaScript ?
- 2. Quelles sont les fonctionnalités notables de TypeScript ?
- 3. Quels sont les avantages de l'utilisation de TypeScript ?
- 4. Quels sont les inconvénients de l'utilisation de TypeScript ?
- 5. Quels sont exactement les composants de TypeScript ?
- 6. Pouvez-vous expliquer les interfaces dans TypeScript ?
- 7. Que sont les variables dans TypeScript et comment sont-elles déclarées de différentes manières ?
- 8. Comment un sous-ensemble d'une interface peut-il être utilisé pour générer un nouveau type ?
- 9. Qu'entendez-vous par "tous" types, et quand dois-je les utiliser ?
- 10. En quoi TypeScript est-il un langage avec une syntaxe typée statiquement facultative ?
- 11. En TypeScript, que signifient les modules ?
- 12. Comment fonctionnent les "énumérations" dans TypeScript ?
- 13. Qu'est-ce qui distingue un module interne d'un module externe ?
- 14. Que signifie la fonction anonyme de TypeScript ?
- 15. En TypeScript, qu'est-ce qu'un espace de noms et comment en déclarer un ?
- 16. Quels modificateurs d'accès TypeScript prend-il en charge ?
- 17. TypeScript autorise-t-il la surcharge de fonctions ?
- 18. Comment TypeScript autorise-t-il les arguments facultatifs dans les fonctions ?
- 19. Comment var, let et const varient-ils les uns des autres ?
- 20. Dans TypeScript, décrivez les décorateurs ?
- 21. Dans TypeScript, que signifie Mixins ?
- 22. Que sont exactement les alias de type dans TypeScript ?
- 23. Que signifie le terme « variable de portée » ?
- 24. A quoi sert exactement noImplicitAny ?
- 25. En quoi les types d'union et d'intersection varient-ils les uns des autres ?
- 26. Comment définissez-vous un mot-clé de déclaration TypeScript ?
- 27. En TypeScript, que sont les génériques ?
- 28. Que signifie JSX dans TypeScript ?
- 29. Que sont les ambiances TypeScript et quand dois-je les utiliser ?
- 30. Qu'entendez-vous par classe abstraite dans TypeScript ?
- 31. Qu'est-ce qu'un fichier TypeScript Map ?
- 32. En TypeScript, que sont les assertions de type ?
- Conclusion
Microsoft a développé et continue de prendre en charge le langage de programmation TypeScript. Avec l'ajout du typage statique en option, il s'agit d'un sur-ensemble syntaxique de JavaScript.
Le langage de développement d'applications à grande échelle TypeScript compile JavaScript. Comme TypeScript est un sur-ensemble de JavaScript, les programmes écrits en JavaScript sont également valides en TypeScript.
Voici une liste complète des questions et réponses les plus typiques des entretiens avec les développeurs TypeScript au cas où vous en assisteriez.
1. Qu'est-ce que TypeScript et en quoi est-il différent de JavaScript ?
Un sur-ensemble de JavaScript, TypeScript se compile en JavaScript standard. D'un point de vue conceptuel, TypeScript et JavaScript sont similaires à SASS et CSS.
En d'autres termes, TypeScript est ES6 JavaScript avec quelques fonctionnalités supplémentaires. JavaScript est un langage de script plus proche de Python, tandis que TypeScript est un langage orienté objet et typé statiquement comparable à Java et C#.
Les classes et les interfaces font toutes partie de la conception orientée objet de TypeScript, et l'inférence de type est l'un des nombreux outils disponibles grâce à son typage statique.
JavaScript est écrit dans un fichier avec une extension .js, tandis que TypeScript est écrit dans un fichier avec une extension .ts.
Contrairement à JavaScript, le code TypeScript ne peut pas être exécuté directement dans un navigateur ou sur toute autre plate-forme et n'est pas compris par les navigateurs. La plate-forme cible exécutera ensuite le JavaScript brut qui a été généré à partir des fichiers .ts à l'aide du transpiler de TypeScript.
2. Quelles sont les fonctionnalités notables de TypeScript ?
- Le typage statique est une fonctionnalité de TypeScript qui facilite la vérification du type lors de la compilation. Ainsi, même sans exécuter le script, vous pouvez détecter des erreurs dans le code au fur et à mesure que vous l'écrivez.
- Le DOM peut être modifié à l'aide de TypeScript pour ajouter ou supprimer des éléments.
- Tout système d'exploitation, y compris Windows, macOS et Linux, peut avoir le compilateur TypeScript installé.
- Les classes, les interfaces et les modules sont quelques-unes des fonctionnalités offertes par TypeScript. Il peut ainsi créer du code orienté objet pour le développement côté client et côté serveur.
- La majorité des fonctionnalités d'ECMAScript 2015 (ES 6, 7) sont déjà incluses dans TypeScript, y compris la classe, l'interface, les fonctions Arrow, etc.
- Si vous utilisez le typage dynamique de JavaScript, TypeScript prend également en charge le typage statique facultatif.
3. Quels sont les avantages de l'utilisation de TypeScript ?
- Tout moteur ou navigateur JavaScript peut exécuter TypeScript car il est rapide, facile à apprendre et s'exécute rapidement.
- Il partage la même syntaxe et sémantique que JavaScript.
- Cela facilite l'écriture plus rapide du code frontal par les développeurs backend.
- Il intègre des fonctionnalités ES6 et ES7 qui peuvent fonction en JavaScript Moteurs ES5 comme Node.js.
- Les bibliothèques JavaScript existantes telles que Jquery, D3.js, etc. sont prises en charge via le fichier de définition, qui porte l'extension.d.ts.
- Un script JavaScript qui existe déjà peut invoquer le code TypeScript. Il s'intègre également de manière transparente aux frameworks et bibliothèques JavaScript actuels.
4. Quels sont les inconvénients de l'utilisation de TypeScript ?
- Le codage avec TypeScript nécessite un long processus de compilation.
- Il ne prend pas en charge les classes abstraites.
- La qualité des fichiers de définition de type est un problème.
- Toute bibliothèque tierce doit avoir un fichier de définition pour pouvoir être utilisée.
- Une étape de compilation est nécessaire pour convertir TypeScript en JavaScript si nous voulons exécuter l'application TypeScript dans le navigateur.
- JavaScript est utilisé par les développeurs Web depuis de nombreuses années et TypeScript n'apporte rien de nouveau.
5. Quels sont exactement les composants de TypeScript ?
Dans TypeScript, il existe trois catégories principales de composants, notamment :
- Langue: Il inclut des annotations pour le type, les mots-clés et la syntaxe.
- Compilateur TypeScriptComment: Les instructions TypeScript sont traduites en JavaScript par ce compilateur (tsc).
- Service de langage TypeScript: Le service de langage propose des applications de type éditeur en tant que deuxième couche au-dessus du processus de compilation de base. L'ensemble standard d'opérations d'édition courantes est pris en charge par le service linguistique.
6. Pouvez-vous expliquer les interfaces dans TypeScript ?
TypeScript utilise des interfaces pour spécifier la syntaxe des entités. En d'autres termes, les formulaires de données tels que des objets ou un tableau d'éléments peuvent être décrits à l'aide d'interfaces. Le mot-clé interface, le nom de l'interface et sa définition sont utilisés pour déclarer les interfaces. Examinons l'interface de base d'un objet utilisateur.
Le type d'une variable peut ensuite être défini à l'aide de l'interface (de la même manière que vous affectez des types primitifs à une variable). Les propriétés de l'interface seront alors remplies par une variable de type Utilisateur.
Votre projet TypeScript bénéficie des interfaces car elles assurent l'uniformité. De plus, les interfaces améliorent les outils de votre projet en améliorant les capacités de saisie semi-automatique de l'IDE et en garantissant que les bonnes valeurs sont fournies aux constructeurs et aux méthodes.
7. Que sont les variables dans TypeScript et comment sont-elles déclarées de différentes manières ?
Une variable est une zone de mémoire spécifiquement désignée qui est utilisée pour stocker des valeurs. Deux-points (:) sont placés après le nom de la variable et sont suivis du type lors de la déclaration d'une variable dans TypeScript. Nous déclarons des variables avec le mot-clé var, comme en JavaScript.
Certaines directives doivent être respectées lors de la déclaration d'une variable dans Typescript :
- Le nom ne peut pas commencer par un chiffre.
- Le nom de la variable doit contenir des lettres ou des chiffres.
- Le symbole dollar ($) et le trait de soulignement (_) sont les seuls caractères spéciaux autorisés dans ce champ.
8. Comment un sous-ensemble d'une interface peut-il être utilisé pour générer un nouveau type ?
En fournissant un type ou une interface existante et en choisissant les clés à exclure du nouveau type, vous pouvez créer un nouveau type dans TypeScript à l'aide de l'utilitaire type omit.
L'exemple qui suit montre comment construire un nouveau type appelé UserPreview qui est basé sur l'interface utilisateur mais exclut la propriété email.
9. Qu'entendez-vous par "tous" types, et quand dois-je les utiliser ?
Parfois, vous devez enregistrer une valeur dans une variable, mais vous n'êtes pas sûr du type de la variable au préalable. La valeur peut provenir d'une entrée utilisateur ou d'une demande d'API, par exemple. Vous pouvez attribuer n'importe quel type de valeur à un type de variable en utilisant le type "any".
Lorsque le type d'une variable n'est pas explicitement spécifié et que le compilateur est incapable de le déterminer à partir du contexte, TypeScript considère que la variable est de type any.
10. En quoi TypeScript est-il un langage avec une syntaxe typée statiquement facultative ?
Il est possible de demander au compilateur de ne pas tenir compte du type d'une variable dans TypeScript car il est éventuellement typé de manière statique. N'importe quel type de données peut être utilisé pour attribuer n'importe quel type de valeur à la variable. Lors de la compilation, TypeScript ne fournira aucune vérification d'erreur.
11. En TypeScript, que signifient les modules ?
Il est efficace de regrouper les variables, fonctions, classes, interfaces, etc. pertinentes à l'aide de modules. Il peut être utilisé, mais pas dans la portée globale, uniquement à l'intérieur de sa propre portée.
Essentiellement, les variables, fonctions, classes et interfaces définies d'un module ne sont pas directement accessibles depuis l'extérieur du module.
Le mot-clé export peut être utilisé pour construire un module, tandis que le mot-clé import peut être utilisé pour inclure un module dans un autre module.
12. Comment fonctionnent les "énumérations" dans TypeScript ?
Une méthode de définition d'une collection de constantes nommées consiste à utiliser des énumérations ou des types énumérés. Ces structures de données ont une longueur fixe et une collection de valeurs fixes.
Lors de la représentation d'une collection d'alternatives pour une valeur donnée dans TypeScript, les énumérations sont fréquemment utilisées pour décrire les possibilités à l'aide d'un ensemble de paires clé/valeur.
Voyons une illustration d'une énumération utilisée pour fournir une variété de types d'utilisateurs.
Les énumérations sont converties en interne en objets JavaScript réguliers par TypeScript après la compilation. L'utilisation d'énumérations est donc préférable à l'utilisation de plusieurs variables const distinctes.
Votre code est de type sécurisé et plus facile à comprendre en raison du regroupement fourni par les énumérations.
13. Qu'est-ce qui distingue un module interne d'un module externe ?
Module interne :
- Les modules internes étaient une caractéristique de l'itération précédente de Typescript.
- Le nom et le corps des modules internes sont définis à l'aide de ModuleDeclarations.
- Ce sont des membres d'autres modules qui sont locaux ou exportés.
- Les classes, les interfaces, les fonctions et les variables sont regroupées dans des modules internes, qui peuvent être exportés dans un autre module.
Module externe :
- Dans la version la plus récente, les modules externes sont appelés modules.
- Un fichier source séparé appelé module externe est utilisé pour les créer, et chacun a au moins une déclaration d'importation ou d'exportation.
- Dans la version la plus récente, les modules externes sont appelés modules.
- Les instructions internes des définitions de module peuvent être masquées à l'aide de modules externes, ne laissant visibles que les méthodes et les arguments connectés à la variable définie.
14. Que signifie la fonction anonyme de TypeScript ?
Les fonctions classées comme anonymes n'ont pas de nom de fonction comme identifiant. Ces routines sont définies dynamiquement lors de l'exécution. Comme les fonctions régulières, les fonctions anonymes peuvent prendre des entrées et produire des résultats.
Une fonction anonyme est généralement inaccessible une fois qu'elle a été créée. Les variables peuvent être affectées à une fonction anonyme.
15. En TypeScript, qu'est-ce qu'un espace de noms et comment en déclarer un ?
L'espace de noms regroupe logiquement les fonctionnalités. Ceux-ci préservent en interne le code hérité de la dactylographie. Il englobe les traits et les choses avec des liens particuliers.
Un autre nom pour un espace de noms est un module interne. Les interfaces, les classes, les fonctions et les variables peuvent toutes être incluses dans un espace de noms pour fournir une collection de fonctionnalités connectées.
16. Quels modificateurs d'accès TypeScript prend-il en charge ?
Voici des exemples de la manière dont les modificateurs d'accès public, privé et protégé de TypeScript peuvent être utilisés pour contrôler l'accessibilité d'un membre de classe :
- Public – L'accès est disponible pour chaque membre de la classe, toutes ses classes descendantes et chaque instance de la classe.
- Protégé - Ils sont accessibles à tous les membres de la classe et à toutes ses sous-classes. Cependant, une instance de classe ne peut pas accéder.
- L'accès privé à ceux-ci est limité aux membres de la classe uniquement.
Puisque JavaScript est pratique, si un modificateur d'accès n'est pas donné, il est supposé être public.
17. TypeScript autorise-t-il la surcharge de fonctions ?
Oui, la surcharge de fonctions est prise en charge par TypeScript. Mais maintenant que c'est fait, c'est étrange. Par conséquent, lors d'une surcharge avec TypeScript, il n'y a qu'une seule implémentation avec une variété de signatures.
Alors que la seconde signature contient un paramètre de type texte, la première signature ne comporte qu'un seul paramètre de type numéro. La troisième fonction, qui inclut un argument de type any, contient l'implémentation réelle.
La mise en œuvre détermine ensuite le type du paramètre fourni et exécute une section de code distincte conformément à cette détermination.
18. Comment TypeScript autorise-t-il les arguments facultatifs dans les fonctions ?
Contrairement à JavaScript, si vous essayez d'appeler une fonction sans spécifier la quantité précise et les types de paramètres comme indiqué dans sa signature de fonction, le compilateur TypeScript générera une erreur.
Vous pouvez utiliser des paramètres facultatifs en utilisant le symbole de point d'interrogation ('?') pour contourner ce problème. Il montre que les paramètres facultatifs peuvent être indiqués en ajoutant un "?" à ceux qui peuvent ou non recevoir une valeur.
19. Comment var, let et const varient-ils les uns des autres ?
Trois façons différentes de déclarer une variable sont proposées par TypeScript, chacune avec une application suggérée.
var: Déclare une variable globale ou de portée fonction avec le comportement et les directives de portée des variables var de JavaScript. Les variables n'ont pas besoin que leurs valeurs soient définies lorsqu'elles sont déclarées.
laisser: déclare une variable de bloc de portée locale. Let variables n'ont pas besoin que la valeur d'une variable soit définie lorsqu'elles sont déclarées. Le terme « variable locale à portée de bloc » fait référence à une variable accessible uniquement depuis l'intérieur du bloc dans lequel elle est contenue, telle qu'une fonction, un bloc if/else ou une boucle. Les variables let ne peuvent pas être lues ou écrites avant d'être déclarées, contrairement à var.
const: Déclare une valeur pour une constante de portée de bloc qui ne peut pas être modifiée après son initialisation. Les variables const doivent être initialisées avant d'être déclarées. Pour les variables qui restent constantes pendant toute leur existence, c'est optimal.
20. Dans TypeScript, décrivez les décorateurs ?
Un accesseur, une propriété, un paramètre, une classe, une fonction ou un décorateur peuvent tous être déclarés d'une manière spécifique en tant que décorateurs. Les décorateurs sont des fonctions avec le préfixe @expression qui seront invoquées lors de l'exécution avec des détails sur la déclaration décorée.
L'expression doit évaluer une fonction pour que les décorateurs fonctionnent.
Les décorateurs TypeScript ont pour objectif d'ajouter de manière déclarative des annotations et des informations au code actuel.
Dans notre fichier tsconfig.json ou sur la ligne de commande, vous devez activer l'option du compilateur experimentalDecorators afin d'activer le support expérimental des décorateurs :
21. Dans TypeScript, que signifie Mixins ?
Les mixins sont une technique de création de classes à partir de parties réutilisables en Javascript et de mélange de classes partielles pour créer des classes complètes plus complexes.
Le concept est simple : la fonction B accepte la classe A et renvoie une nouvelle classe avec sa fonctionnalité ajoutée, par opposition à la classe A étendant la classe B pour obtenir sa fonctionnalité. La fonction B dans ce cas est un mixin.
22. Que sont exactement les alias de type dans TypeScript ?
Les alias de type modifient le nom d'un type. Les alias de type, comme les interfaces, peuvent être utilisés pour nommer des primitives, des unions, des tuples et tout autre type qui devrait autrement être défini à la main.
Le crénelage ne crée pas de nouveau type ; il modifie plutôt le nom d'un type existant. L'aliasing d'une primitive n'est pas vraiment pratique, bien que cela puisse être bénéfique pour la documentation.
Les alias de type, comme les interfaces, peuvent être universels ; tout ce que vous avez à faire est d'ajouter des paramètres de type et de les utiliser sur le côté droit de la déclaration d'alias.
23. Que signifie le terme « variable de portée » ?
JavaScript prend en charge les variables de portée locales et globales. La portée est une collection d'objets, de variables et de fonctions.
Un exemple de déclaration d'une variable dans deux portées est :
- Variable avec portée locale - Il sert d'objet de fonction pour une utilisation dans les fonctions.
- Variable avec portée globale - Cet objet de fenêtre peut être utilisé à la fois à l'intérieur et à l'extérieur des fonctions
24. A quoi sert exactement noImplicitAny ?
Le traitement par le compilateur TypeScript des types implicites Any de votre projet est modifié par la propriété noImplicitAny dans le fichier de configuration tsconfig.json pour les projets TypeScript.
L'indicateur noImplicitAny peut être défini sur true ou false et est toujours modifiable après l'initialisation. Étant donné que chaque projet est unique, il n'y a pas de bonne ou de mauvaise réponse sur ce que devrait être ce nombre.
Comprendre les distinctions entre les états activé et désactivé du drapeau peut vous aider à sélectionner le paramètre à utiliser pour le drapeau.
Le compilateur ne détermine pas le type d'une variable en fonction de son utilisation si l'indicateur noImplicitAny est défini sur false (valeur par défaut). Le type est à la place défini sur any par défaut par le compilateur.
Cependant, si l'option noImplicitAny est définie sur true, le compilateur s'efforcera de déduire le type et déclenchera une erreur de compilation s'il n'y parvient pas.
25. En quoi les types d'union et d'intersection varient-ils les uns des autres ?
Au lieu de générer de nouveaux types à partir de rien, les types d'union et d'intersection vous permettent de composer et de mélanger des types existants. L'union et l'intersection ont des qualités distinctives qui les rendent parfaites pour certains cas d'utilisation.
Un type qui peut être l'un de plusieurs types est appelé type d'union. La liste des types qui seront utilisés dans le nouveau type est divisée en utilisant le | (barre verticale) dans les types d'union.
Regardons une illustration :
D'autre part, l'intersection est définie comme un type qui fusionne plusieurs types en un seul, intégrant toutes les caractéristiques de chaque type pour former un nouveau type. La liste des types qui seront fusionnés est divisée en intersections à l'aide du symbole &.
Examinons une illustration :
26. Comment définissez-vous un mot-clé de déclaration TypeScript ?
Il n'y a pas de fichiers de déclaration TypeScript dans les bibliothèques ou les frameworks JavaScript. Cependant, vous devez utiliser le mot clé declare afin de les utiliser dans le fichier TypeScript sans rencontrer d'erreurs de compilation.
Lorsque vous souhaitez spécifier une variable qui pourrait déjà exister ailleurs, vous utilisez le mot clé declare dans les déclarations et méthodes ambiantes.
27. En TypeScript, que sont les génériques ?
Un outil appelé TypeScript Generics propose une méthode de production de pièces réutilisables. Au lieu de travailler avec une seule forme de données, il peut développer des composants qui peuvent fonctionner avec une gamme de types de données.
De plus, il offre une sécurité de type sans sacrifier l'efficacité ou la productivité. Nous pouvons construire des classes génériques, des fonctions génériques, des méthodes génériques et des interfaces génériques grâce aux génériques.
Les génériques sont des collections hautement typées puisqu'un paramètre de type est écrit entre crochets ouvrants () et fermants (>). Il utilise une sorte unique de variable de type appelée T qui représente les types.
28. Que signifie JSX dans TypeScript ?
JSX est un JavaScript légitime qui peut être converti à partir d'une syntaxe de type XML intégrable. Parallèlement au framework React, JSX a gagné en popularité.
La compilation directe, la vérification de type et l'intégration de JSX dans JavaScript sont prises en charge par TypeScript. Vous devez donner à votre fichier une extension.tsx et activer l'option JSX si vous souhaitez l'utiliser.
29. Que sont les ambiances TypeScript et quand dois-je les utiliser ?
Le compilateur est informé du code source réel qui se trouve ailleurs via des déclarations ambiantes.
Il se cassera sans préavis si nous essayons d'utiliser ces codes sources au moment de l'exécution mais qu'ils ne sont pas présents. Les fichiers de type document sont des fichiers de déclarations ambiants.
Si la source change, la documentation doit être mise à jour et des problèmes de compilateur se produiront si le fichier de déclaration ambiant n'est pas modifié.
De plus, cela nous permet de tirer parti des bibliothèques JavaScript bien connues qui sont déjà largement utilisées, telles que jQuery, AngularJS, NodeJS, etc.
30. Qu'entendez-vous par classe abstraite dans TypeScript ?
Les classes abstraites définissent le contrat d'un objet sans permettre l'instanciation directe de l'objet. Cependant, une classe abstraite pourrait également offrir les informations d'implémentation de son membre.
Un ou plusieurs membres abstraits peuvent être trouvés dans une classe abstraite. Les membres abstraits de la superclasse doivent alors avoir une implémentation fournie par toutes les classes qui étendent la classe abstraite.
Examinons un exemple TypeScript d'une classe abstraite et comment une classe différente pourrait l'étendre. Bien que les classes Car et Bike dans l'exemple ci-dessous étendent la classe Vehicle, elles implémentent chacune la fonction drive() d'une manière unique.
31. Qu'est-ce qu'un fichier TypeScript Map ?
Un fichier de carte source appelé fichier de carte TypeScript contient des données sur nos fichiers d'origine. Les fichiers de mappage source, ou fichiers .map, permettent aux outils de mapper le code JavaScript généré et les fichiers source TypeScript qui l'ont produit.
De plus, ces fichiers peuvent être consommés par les débogueurs, ce qui nous permet de déboguer le fichier TypeScript plutôt que le fichier JavaScript.
32. En TypeScript, que sont les assertions de type ?
Bien que l'assertion de type fonctionne de la même manière que le transtypage dans d'autres langages tels que C # et Java, elle n'effectue pas de vérification de type ni de réorganisation des données.
Bien que l'assertion de type n'ait aucun effet sur l'exécution, la conversion de type offre cette prise en charge. Les assertions de type, en revanche, ne sont utilisées que par le compilateur et fournissent des indications sur la manière dont nous voulons que notre code soit examiné.
Conclusion
En conclusion, nous espérons que ces questions d'entretien TypeScript vous seront utiles, que vous soyez un développeur se préparant pour un entretien d'embauche ou un responsable du recrutement essayant de trouver le meilleur candidat.
N'oubliez pas que le processus de recrutement implique plus qu'une simple expertise technique. Pour vous assurer que vous décrochez (ou trouvez le candidat approprié pour) le poste, les expériences passées et les compétences non techniques sont tout aussi cruciales.
De nombreuses questions d'entretien TypeScript sont ouvertes et n'ont pas une seule bonne réponse, alors gardez cela à l'esprit.
Les enquêteurs sont intéressés par la justification de vos réponses.
Soyez toujours prêt pour les demandes de suivi expliquant comment vous êtes arrivé à votre réponse. Décrivez votre processus de pensée.
Soyez sympa! Laissez un commentaire