網站搜尋

angularjs - 在 Typescript 中 TS Emit Failed 是什麼意思?


當我按下 cmd+S 時,我一直收到小紅色彈出視窗顯示「TS Emit Failed」。控制台沒有顯示任何錯誤。可能是什麼問題或者什麼原因會導致這個警告?有人可以解釋給我聽嗎?謝謝。

Atom 上的錯誤截圖

而這是我的 tsconfig.json 文件

{ 
"compileOnSave": true,
"compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "sourceMap": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noEmitHelpers": true,
    "noEmitOnError": true
},
"exclude": [
    "node_modules",
    "platforms"
] 
}

答案#1

Typescript 是 JavaScript 的「超集合」,這表示它包含了所有的 JavaScript 功能,並且還增加了許多額外功能,例如設定類型的能力和更優雅的語法。雖然網頁瀏覽器或 Node 能夠解讀和執行 JavaScript,但它們無法理解 Typescript 所提供的所有額外功能。這意味著在使用前,Typescript 必須先「轉譯」(類似編譯,但不是將原始碼轉換為機器碼,而是將 Typescript 原始碼轉換成 JavaScript 原始碼,進而可以被瀏覽器解讀)。

當轉譯器運行時,它會「輸出」JavaScript。這個錯誤很可能意味著你的 TypeScript 中有錯誤,導致它無法成功轉譯為 JavaScript,也就是說,轉譯器無法輸出正確的 JavaScript。

如果你想要幫助找出錯誤的原因,你應該貼上你的程式碼。:)

更新

這個問題在這個討論串中有討論。基本上,JS Outdated 錯誤意味著你上次儲存時編譯的 .js 檔案與如果你編譯當前 .ts 檔案會產生的 .js 檔案不匹配。似乎有些人即使已經儲存過也會出現這個問題。試著更新 atom-typescript 和/或在你的 tsconfig.json 中指定 out 屬性。