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