为什么打字稿不会在语句结尾处丢失分号时发出错误

RKS*_*ode 3 typescript

例如,如果我使用以下语句,我看不到编译器错误.

public SomeFunction() {

    this.privateFunction() (no semi colon here)
}
Run Code Online (Sandbox Code Playgroud)

要么

public SomeFunction() {

    this.privateFunction();
}
Run Code Online (Sandbox Code Playgroud)

我想知道在每个声明的末尾是否真的需要分号?

Geo*_*lah 9

分号在JavaScript中是可选的 - TypeScript是JavaScript的超集,ergo,分号在TypeScript中是可选的.也就是说,如果您不知道分号将自动放置在哪里,您仍会像使用JavaScript一样遇到ASI问题.

  • 对不起,这只是一个经常重复的神话.没有ASI问题.这只是一种语言根深蒂固的语言可以追溯到C语言,其中实际上需要分号. (3认同)
  • 我不同意@ RickO'Shea,Geoffrey Abdallah是完全正确的;分号是可选的,但确实存在ASI问题。因此,不能将其视为教条。有很多示例,但是您仅用一个示例就可以驳斥“没有...”的说法,例如在带有最小化的Bootstrap中的此问题:https://github.com/twbs/bootstrap/issues/3057 Douglas Crockford建议使用分号。与Google的JS准则一样:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml#Semicolons (3认同)
  • TypeScript per v1.8 可以捕获由 ASI 引起的 [unreachability] 问题:https://github.com/Microsoft/TypeScript/issues/2575 但编译器构建者有意将其余部分留给外部工具,例如具有“分号”的 TSLint专门为此制定的规则:https://palantir.github.io/tslint/rules/semicolon Rick 可以将此规则设置为`never`,即:“不允许在每个语句的末尾使用分号*除非必要时*。 ” (!) (2认同)