Просматривая исходный код правила 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;
}
Мой гугл фу пока что подвел меня.
Что такое оператор восклицательного знака TS и как он работает?