Переглядаючи вихідний код для правила tslint, я натрапив на таке твердження:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Помітьте !
оператора після node.parent
. Цікаво!
Я спершу спробував скомпілювати файл локально з моєю інстальованою версією TS (1.5.3). Отримана помилка вказувала на точне розташування чубчика:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Далі я перейшов до останнього TS (2.1.6), який склав його без проблем. Тож, здається, це властивість TS 2.x. Але транспіляція повністю ігнорувала удар, в результаті чого з'явився наступний JS:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Мій Google фу поки що не зміг мене.
Що таке оператор знака оклику та як він працює?