Champs, constructeurs, propriétés de paramètre, public, protected, private et #private, readonly, abstract et implements. Testez qui peut atteindre chaque membre dans une matrice interactive.
Une classe TypeScript est une classe JavaScript avec des champs typés et des règles d'accès. Les membres public sont accessibles partout, les membres protected dans la classe et ses sous-classes, les membres private uniquement dans la classe. Ces trois vérifications n'existent qu'à la compilation. Un champ #name est aussi privé dans le JavaScript exécuté, et readonly bloque toute écriture après le constructeur.
Mots-clés de classe et leur effet
Choisissez un modificateur et la matrice affiche cinq façons dont le code peut atteindre ce membre, avec le résultat de tsc pour chacune. La ligne avec les crochets est celle qui surprend : les modificateurs de compilation peuvent être contournés avec une clé chaîne, alors qu'un champ # ne le peut pas.
private est une vérification TypeScript. Il disparaît de la sortie, et obj["secret"] compile toujours et lit la valeur. Un champ #secret est un champ privé JavaScript : aucune clé chaîne ne l'atteint, et le code hors de la classe ne peut pas le lire à l'exécution.
Un raccourci qui déclare et affecte un champ à partir d'un paramètre du constructeur. Écrire constructor(private readonly id: string) {} crée un champ id private readonly sans corps nécessaire. Le préfixe peut être public, protected, private ou readonly.
Non. implements vérifie seulement que la classe terminée correspond à l'interface. Les paramètres de méthode ont toujours besoin de leurs propres annotations ; en omettre une en mode strict produit une erreur any implicite, même si l'interface nomme déjà son type.
strictPropertyInitialization, que strict active, exige que chaque champ déclaré soit défini dans la déclaration ou le constructeur. Donnez-lui une valeur, rendez-le optionnel, ou ajoutez ! après le nom si autre chose le définit avant son utilisation.
Utilisez une classe abstraite quand les sous-classes doivent partager du vrai code, comme une méthode qui appelle un hook abstrait. Une interface ne contient aucun code et une classe peut en implémenter plusieurs, elle convient donc pour décrire des formes.
Le constructeur déclare deux champs dans sa liste de paramètres. Le cache est un champ #, donc rien hors de la classe ne peut le lire ni le vider.
describe est du code partagé ; area est le hook que chaque forme doit fournir. Avec noImplicitOverride activé, le mot-clé override est obligatoire sur area dans Circle.
L'interface garantit que la classe possède send avec la bonne forme, mais le paramètre a toujours besoin de sa propre annotation de type.
Aucune restriction. Omettre le modificateur revient au même.
Dans les méthodes propres à Account
Dans une méthode de Savings
À l'extérieur, avec un point
À l'extérieur, avec une clé chaîne
À l'extérieur, en affectant une nouvelle valeur
Ouvert à la classe et à ses sous-classes. Une clé chaîne passe quand même la vérification, car ce n'est qu'une règle de type.
Dans les méthodes propres à Account
Dans une méthode de Savings
À l'extérieur, avec un point
À l'extérieur, avec une clé chaîne
À l'extérieur, en affectant une nouvelle valeur
Fermé même aux sous-classes, mais seulement pendant la vérification des types. La forme avec crochets compile et la valeur est lisible à l'exécution.
Dans les méthodes propres à Account
Dans une méthode de Savings
À l'extérieur, avec un point
À l'extérieur, avec une clé chaîne
À l'extérieur, en affectant une nouvelle valeur
Un champ privé JavaScript. Aucune clé chaîne ne le désigne, donc chaque accès extérieur échoue, et le moteur impose la même règle à l'exécution.
Dans les méthodes propres à Account
Dans une méthode de Savings
À l'extérieur, avec un point
À l'extérieur, avec une clé chaîne
À l'extérieur, en affectant une nouvelle valeur
Tout le monde peut le lire ; personne ne peut l'affecter après la construction, pas même les méthodes de la classe.
Dans les méthodes propres à Account
Dans une méthode de Savings
À l'extérieur, avec un point
À l'extérieur, avec une clé chaîne
À l'extérieur, en affectant une nouvelle valeur
Choisir un modificateur
Accès à un membre {v}
Utilisé depuis
Code
Résultat tsc
Compile
Commencer gratuitement · Sans carte bancaire