En regardant le code source pour une règle tslint, je suis tombé sur la déclaration suivante:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Remarquez l' !
opérateur après node.parent
. Intéressant!
J'ai d'abord essayé de compiler le fichier localement avec ma version de TS actuellement installée (1.5.3). L'erreur résultante indiquait l'emplacement exact du coup:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Ensuite, je suis passé au dernier TS (2.1.6), qui l'a compilé sans problème. Il semble donc être une fonctionnalité de TS 2.x. Mais la transpilation a complètement ignoré le bang, résultant en le JS suivant:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Mon Google fu m'a jusqu'ici échoué.
Qu'est-ce que l'opérateur de point d'exclamation de TS et comment fonctionne-t-il?