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