2015-10-20 23 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模式。