2015-10-20 24 views
1

所以...我今天一直在使用typescript,並使用typecript類,例子類(實際上是拋出錯誤的那個,僅僅是因爲它是輸出的js文件中的第一個)Typescript將「類」標識符輸出到javascript

class AuthRequestDTO { 
    grant_type: string; 
    refresh_token: string; 
    username: string; 
    password: string; 
    client_id: string; 
    use_refresh: boolean; 
} 

這是一個.ts文件,以及項目中的許多其他.ts文件。該項目設置爲將所有ts文件編譯成1個輸出js文件,這工作正常。現在解決這個問題;當我嘗試使用chrome,firefox或IE瀏覽我的網站時,它們都會拋出一個異常,說「類是保留的標識符」。但是Typescript文件中的類標識符是完全有效的。爲什麼typescript將class關鍵字輸出到結果.js文件中? (我明白,類是JavaScript中的保留標識符,這不是我關心的問題,我擔心爲什麼Visual Studio 2015s TS Compiler會將「class」關鍵字放入輸出中?)有沒有我錯過的設置,或者是什麼Visual Studio今天一直在吸菸?

是我到目前爲止已經試過用什麼IM:

我在運行Visual Studio 2015年的企業,解決方案是ES6,TS構建選項爲單個.js文件。如果您有任何使用這些庫的情況,我也會使用AngularJs類庫和Typings和JQuery,這是一個促成因素。我還清理並重建了項目和整個解決方案,並重新啓動了我的開發機器。我也關閉了「結合JavaScript輸出到文件」設置,看看它是不是古怪的,我在單獨的.js文件中遇到同樣的問題,所以不是這樣。強制「使用嚴格」也沒有幫助,這是一個牽強的嘗試,因爲這是一個JavaScript命令,而不是一個打字稿,但我想我會試試它。

+2

你在'Project Properties> TypeScript Build'中爲ECMAScript版本選擇了什麼?因爲如果它是'EMCAScript 6','class'是一個有效的標識符,但不被(大多數)瀏覽器支持。如果你想讓它在瀏覽器中運行,你需要選擇'ECMAScript 5'作爲目標 – CodingIntrigue

+1

該解決方案是爲ES 6設置的。這是否意味着ES6對於目前大多數瀏覽器來說太過分了? – Skintkingle

+0

正確。您可以檢查ES6瀏覽器兼容性[這裏](https://kangax.github.io/compat-table/es6/)。 – CodingIntrigue

回答

1

打字稿輸出「類」標識爲JavaScript

如果你有你的編譯目標設置爲es6,然後打字稿不會下級發出class

將您的編譯目標設置爲es5class轉換爲function/prototype模式。