TypeScript 是否允许属性之间没有逗号的对象文字?

Does TypeScript allow object literals without commas between properties?

我正在查看 the documentation for ng-bootstrap and noticed that one of their examples 在对象字面量定义中遗漏了一个逗号。 (我不能 link 直接访问 Plunker 中的文件,但它是 src/app.ts 的第 30 行。)

@NgModule({
  imports: [BrowserModule, FormsModule, ReactiveFormsModule, JsonpModule, NgbModule.forRoot()], 
  declarations: [App, NgbdDropdownManual]
  bootstrap: [App]
}) 
export class AppModule {}

这让我开始尝试使用 Plunker,结果证明您可以删除对象声明中的所有逗号,代码仍然可以编译并且 运行s -- 尝试添加 console.log({a:1 b:2})看看我的意思。

这是否在所有 TypeScript 中得到正式支持,或者它是代码编译方式的产物,运行 在此特定示例中?

这很可能是因为在转译时 tsc 会插入缺失的标点符号。

例如

let x = {
  a: 2 b: 4
}

编译为:

var x = {
   a: 2, b: 4
};

同时发出编译警告告诉你,是预期的。

虽然这似乎有效,但我不会依赖它,因为它似乎只不过是意外后果。

你可以在操场上看到这个例子here