web-dev-qa-db-fra.com

Que signifie!: Signifie dans Typescript?

14
Sinosaurus

Il y aura un scénario où TypeScript pense que certaines propriétés, variables seront null ou undefined. Mais si vous êtes sûr que cette variable ne peut pas être nulle, vous pouvez utiliser cet opérateur.

Prenons l'exemple:

let a = document.getElementById('hello');

if (a) {
    a.style.width = '100px';
}

TypeScript suppose que la variable a peut être nulle car il n'y a aucune garantie que cet élément existe. Donc, avant de pouvoir accéder à cette variable, vous avez mis dans if guard. Mais si vous savez que votre application aura toujours un élément HTML avec id #hello, vous pouvez alors réécrire le code ci-dessus comme suit:

const a = document.getElementById('hello');

a!.style.width = '100px';

Le code ci-dessus est plus lisible et moins verbeux. En savoir plus ici sur https://www.typescriptlang.org/docs/handbook/release-notes/TypeScript-2-0.html

EDIT: Commentaire techniquement correct de @Simon: Plus précisément, l'opération x! produit une valeur de type x avec null et undefined exclus.

21
Harshal Patil

Il s'agit d'une "affirmation d'affectation définitive": varname !: sometype informe TypeScript de ne pas se soucier de vérifier si varname peut être non affecté (il indique à TypeScript que varname sera définitivement attribué, même si TypeScript ne peut pas déduire où il est affecté). Normalement, TypeScript vérifie si la variable peut ne pas être affectée et donne des erreurs.

Pour plus d'informations, voir: https://www.typescriptlang.org/docs/handbook/release-notes/TypeScript-2-7.html#definite-assignment-assertions

3
iislucas