1
我得到了最新的cli并创建了一个新的测试项目。Angular2/CLI是moduleId保留字吗?
angular2 version: "^2.3.1"
"@angular/compiler-cli": "^2.3.1",
"typescript": "~2.0.3"
在AppComponent我有这样的构造:
export class AppComponent {
title = 'app works!';
constructor() {
let test1 = {
id: 'test',
moduleId1: 'moduleId1',
moduleId: 'IsThisReserverdWord',
moduleId2: 'moduleId2'
};
console.log(test1.moduleId1);
let test2 = {
moduleId: 'moduleId3',
};
}
这是非常奇怪的是,控制台日志部是从来没有打,也没有例外。通过删除moduleId:'IsThisReserverdWord'属性它都很好。所以这里是为什么moduleId看起来像一个保留字? 或者我错过了什么?
在本例中,ModuleId不是@Component装饰器的一部分,而是类中对象的属性。没有反射应该遇到代码部分!如果我们有一个模型生成器通过数据库字段来生成实体,其中也有字段名称moduleId,会怎样?这意味着我们不能在代码的任何地方使用单词moduleId?如果是这样,它必须至少导致异常或任何警告给用户,否则代码的观点是错误! – McLac
你的代码也可以在没有模块ID的情况下工作,它不是使用它的任务。而且因为你可能已经配置你的tsconfig来使用模块ID,它将它作为系统关键字 –
如果我们将moduleId看作系统关键字,编译器应该将代码使用标记为错误。现在它导致意想不到的行为 – McLac