Al mirar el código fuente de una regla tslint, me encontré con la siguiente declaración:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Observe el !
operador después node.parent
. ¡Interesante!
Primero intenté compilar el archivo localmente con mi versión actualmente instalada de TS (1.5.3). El error resultante apuntó a la ubicación exacta de la explosión:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
A continuación, actualicé al último TS (2.1.6), que lo compiló sin problemas. Por lo tanto, parece ser una característica de TS 2.x. Pero la transpilación ignoró por completo la explosión, lo que resultó en el siguiente JS:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Mi Google fu hasta ahora me ha fallado.
¿Qué es el operador de signo de exclamación de TS y cómo funciona?