假如你的 Angular 2 代碼已經能夠在調試環境下正常運行了,可是沒法經過 ngc
編譯 (或者是一些其餘須要編譯執行的任務,如 Ionic 2 的 ionic build android
命令等),你會發現一些很是抓狂的錯誤緣由。android
TypeError: cannot read property 'kind' of undefined
這是一個錯誤本體和描述沒有任何關係的實例,正以下文連接的原回答所說,es6
But unlike other incompatibilities, this one generates the most cryptic error message ever.segmentfault
這個錯誤的真實緣由是,因爲 Angular 的 AoT 的設定不兼容,你不能採用 default exports. 須要使用具名輸出。也就是promise
// somefile.ts export default function (...) { ... } ... // some-other-file.ts import whatevar from './somefile';
須要改成angular2
// somefile.ts export function whatevar(...) { ... } ... // some-other-file.ts import { whatevar } from './somefile';
參見問題 http://stackoverflow.com/ques... 最高票答案和評論。ionic
Duplicate identifier 'Promise'
參見以前的問題 https://segmentfault.com/q/10... 。結果代表,不能使用 @types/es6-promise (typings install 我試了一下,貌似也不行,然而不肯定),而應該使用 TypeScript 內建的 Promise 定義。ide
另外 HTML 調用方法時,參數的數量和類型必須和 TypeScript 文件的方法簽名一致。ui