Quando ho esaminato il codice sorgente per una regola tslint, mi sono imbattuto nella seguente dichiarazione:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Si noti l' !
operatore dopo node.parent
. Interessante!
Prima ho provato a compilare il file localmente con la mia versione attualmente installata di TS (1.5.3). L'errore risultante ha indicato la posizione esatta del botto:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Successivamente ho eseguito l'aggiornamento all'ultimo TS (2.1.6), che lo ha compilato senza problemi. Quindi sembra essere una caratteristica di TS 2.x. Ma la transpilation ha ignorato completamente il botto, risultando nel seguente JS:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Finora il mio Google Fu non mi ha deluso.
Cos'è l'operatore del punto esclamativo di TS e come funziona?