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。
我正在查看 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。