【问题标题】:TypeScript !. meaning [duplicate]打字稿!。意义[重复]
【发布时间】:2020-01-08 17:27:00
【问题描述】:

我浏览了一些 documentation in the Angular docs 并遇到了这段代码:

return this.exampleDatabase!.getRepoIssues(
                this.sort.active, this.sort.direction, this.paginator.pageIndex);

这是用于空检查的 C# null-conditional 运算符的 TypeSrcript 等效项吗?

我尝试在 JSFiddle 中做一些事情,但不断收到语法错误:

例子:

const obj = { test: 'ing 123' };

console.log(obj.test);
console.log(obj!.doesntexist); // Excepting null here

但是,相反,我得到:

Uncaught SyntaxError: Unexpected token 。 在新函数 () 在 exec (typescript.js:41) 在 HTMLDocument.runScripts (typescript.js:41)

【问题讨论】:

标签: typescript


【解决方案1】:

那是not-null-assertion operator。它基本上告诉 typescript 它前面的表达式是 not nullnot undefined

它应该用于作为开发人员的您确定变量已定义但编译器无法得出结论的情况。


调查为什么这会导致JSFiddle 出现语法错误...

它尝试运行的转译代码(使用new Function(transpiled)())包含以下内容:

console.log(obj, !.doesntexist);

我无法找到他们使用的 TypeScript 的确切版本,但在引入操作符时它必须早于 2.0。

【讨论】:

  • 感谢您的链接。一个问题,为什么在我的基本示例中会出现语法错误?
  • 因为你在 JavaScript 中使用 TypeScript 语法?
  • 不,我已将 JSFiddle 设置为使用 TypeScript
  • @mwilson 你能在你的问题中链接 JSFiddle 吗?
  • @mwilson 是的,看起来他们使用的是旧版本(低于 2.0)。请参阅更新的答案以及一些详细信息。
猜你喜欢
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多