$refs!: {
helloComponent: Hello
}
https://github.com/vuejs/vue-class-component/blob/master/example/App.vue
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.
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