最佳答案
在查看tslint规则的源代码时,我遇到了以下语句:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {return;}
注意node.parent
后面的!
运算符。有趣!
我首先尝试使用当前安装的TS(1.5.3)版本在本地编译文件。产生的错误指向爆炸的确切位置:
$ tsc --noImplicitAny memberAccessRule.tsnoPublicModifierRule.ts(57,24): error TS1005: ')' expected.
接下来我升级到最新的TS(2.1.6),它编译它没有问题。所以它似乎是TS 2. x的功能。但是转译完全忽略了爆炸,导致以下JS:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {return;}
到目前为止,我的谷歌FU让我失望了。
什么是TS的感叹号操作符,它是如何工作的?