我一直在使用 Svelte、TypeScript 和 Rollup(讓 TypeScript 處理轉譯)來定位 ES7。現在我正在開始一個新專案,需要以 ES5 為目標。
我注意到的第一件事是一切都被轉譯了,但組件仍然是類。那時我的組件中沒有任何腳本。將腳本標簽添加到 .svelte 檔案后,我立即收到錯誤訊息:
Svelte 僅支持 es6 語法。將“compilerOptions.target”設定為“es6”或更高
我知道我需要將 TS 目標設定為 ES6/ES7 并安裝 Rollup Babel 插件來處理轉譯為 ES5。但是為什么普通的 TypeScript 轉換不起作用呢?為什么 Svelte 關心 TypeScript 目標?您會認為 Svelte 檔案在轉譯為 ES5 之前會先轉換為 TS,但似乎反過來呢?
uj5u.com熱心網友回復:
Svelte 編譯器在 JS 上運行,任何其他語言都經過預處理變成 JS,否則 Svelte 編譯器將不得不處理許多不同的語言。另外,你不能把 JS 變成 TS,TS 比 JS 有更多的資訊,沒有辦法取回這些資訊。
如果你的最終結果應該是 ES5,你可能需要一個多步驟的 pileline:
TS => JS 6 =Svelte=> JS 6 => JS 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472037.html
標籤:javascript 打字稿 苗条 卷起 转译器
上一篇:打字稿物件鍵作為另一個物件的鍵?
