github : https://github.com/Jessie-jzn
site Web :https://www.jessieontheroad.com/
1. Vérification de type statique
Le principal avantage de TypeScript est sa vérification de type statique, qui permet de détecter les erreurs courantes pendant la phase de compilation plutôt que lors de l'exécution. Cela améliore la fiabilité et la stabilité du code.
2. Expérience améliorée d'édition de code
Le système de types de TypeScript permet des fonctionnalités de complétion de code, de refactorisation, de navigation et de documentation plus précises dans les éditeurs, augmentant ainsi considérablement l'efficacité du développement.
3. Maintenabilité améliorée du code
Les déclarations de type facilitent la compréhension des intentions et de la structure du code, ce qui est particulièrement bénéfique dans les environnements de développement en équipe.
4. Fonctionnalités linguistiques avancées
TypeScript prend en charge des fonctionnalités avancées non présentes dans JavaScript, telles que les interfaces, les énumérations et les génériques, facilitant le développement d'un code plus structuré et évolutif.
5. Meilleure prise en charge des outils
TypeScript propose diverses options de compilateur pour optimiser le code JavaScript généré et prend en charge différents environnements JS en compilant TypeScript en JavaScript compatible.
Manuscrit | JavaScript | |
---|---|---|
Type de système | Saisie statique avec vérifications de type au moment de la compilation. Des types peuvent être spécifiés pour les variables, les paramètres de fonction et les valeurs de retour. | Saisie dynamique avec vérifications de type à l'exécution, ce qui peut entraîner des erreurs d'exécution liées au type. |
Annotations de types | Prend en charge les annotations de type pour définir explicitement les types. Par exemple, laissez name: string = "Alice"; | Aucune annotation de type. Les types sont déterminés au moment de l'exécution. |
Compilation | Nécessite une compilation en JavaScript. Le compilateur TypeScript vérifie les erreurs de type et génère du code JavaScript équivalent. | S'exécute directement dans les navigateurs ou Node.js sans étape de compilation. |
Programmation orientée objet | Fonctionnalités POO plus riches telles que les classes, les interfaces, les classes abstraites et les modificateurs d'accès. | Fonctionnalités POO de base avec héritage basé sur un prototype. |
Fonctionnalités avancées | Inclut toutes les fonctionnalités ES6 et ES7, ainsi que des fonctionnalités supplémentaires telles que les génériques, les énumérations et les décorateurs. | Prend en charge les normes ES6 et ultérieures, mais ne dispose pas de certaines fonctionnalités avancées fournies par TypeScript. |
Les génériques permettent aux fonctions, classes et interfaces de fonctionner avec n'importe quel type tout en garantissant la sécurité des types.
Exemple:
function identity(arg: T): T { return arg; } const numberIdentity = identity (42); const stringIdentity = identity ("Hello");
Dans cet exemple, la fonction d'identité utilise un
let anyVar: any; let unknownVar: unknown; anyVar = 5; anyVar.toUpperCase(); // No compile-time error, but might cause runtime error unknownVar = "Hello"; if (typeof unknownVar === "string") { unknownVar.toUpperCase(); // Type check ensures safety }
const obj = { name: "John" }; obj.name = "Doe"; // Allowed interface User { readonly id: number; name: string; } const user: User = { id: 1, name: "John" }; user.name = "Doe"; // Allowed user.id = 2; // Error, `id` is readonly
Les décorateurs sont une fonctionnalité TypeScript spéciale qui permet d'ajouter des métadonnées ou de modifier des classes, des méthodes, des propriétés ou des paramètres.
Types :
Exemples :
function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype); } @sealed class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return `Hello, ${this.greeting}`; } }
function logMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Method ${propertyName} called with args: ${JSON.stringify(args)}`); return originalMethod.apply(this, args); }; } class Calculator { @logMethod add(a: number, b: number): number { return a b; } }
Usage:
Les décorateurs sont activés en définissant experimentalDecorators sur true dans tsconfig.json.
interface et type sont tous deux utilisés pour définir les types d'objets, mais ils présentent quelques différences :
interface | taper | |
---|---|---|
Utilisation de base | Définit la forme des objets, y compris les propriétés et les méthodes. | Définit les types primitifs, les types d'objets, les types d'union, les types d'intersection, etc. |
Extension | Prend en charge la fusion des déclarations. Plusieurs déclarations de la même interface sont automatiquement fusionnées. | Ne prend pas en charge la fusion de déclarations. |
Types d'union et d'intersection | Non pris en charge. | Prend en charge le syndicat (` |
Alias de type primitif | Non pris en charge. | Prend en charge l'alias des types primitifs. |
Types mappés | Non pris en charge. | Prend en charge les types mappés. |
Implémentation de classe | Prend en charge l'implémentation de classe à l'aide d'impléments. | Ne prend pas en charge l'implémentation directe de classe. |
Ces questions et réponses devraient aider à préparer les entretiens TypeScript en couvrant les concepts fondamentaux et l'utilisation pratique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3