Beim Durchsuchen des Quellcodes nach einer tslint-Regel stieß ich auf die folgende Aussage:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Beachten Sie den !
Bediener nach node.parent
. Interessant!
Ich habe zuerst versucht, die Datei lokal mit meiner aktuell installierten Version von TS (1.5.3) zu kompilieren. Der resultierende Fehler zeigte auf die genaue Position des Knalls:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Als nächstes habe ich auf den neuesten TS (2.1.6) aktualisiert, der ihn ohne Probleme kompiliert hat. Es scheint also ein Merkmal von TS 2.x zu sein. Aber die Transpilation ignorierte den Knall vollständig, was zu folgendem JS führte:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Mein Google Fu hat mich bisher gescheitert.
Was ist der Ausrufezeichenoperator von TS und wie funktioniert er?