在对* .ts文件生成的代码进行一些更仔细的检查后,我发现如果扩展一个类,那么样板__extends
函数会被复制多次,因为你扩展了很多次...这可能是因为我使用Web Essentials来编译TypeScript源代码,因此tsc
不知道它只需要编写一次吗?
以下是项目构建文件中与TypeScript相关的设置:
<PropertyGroup>
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
...
</PropertyGroup>
我有一堆:
<ItemGroup>
<TypeScriptCompile Include="$(ProjectDir)src\Foo.ts" />
<TypeScriptCompile Include="$(ProjectDir)src\Bar.ts" />
<TypeScriptCompile Include="$(ProjectDir)src\Baz.ts" />
...
</ItemGroup>
tsc有一个命令行选项,特别是--out
用于生成单个文件而不是一堆文件,但是将<Out>
或<TypeScriptOut>
添加到属性组中似乎工作......
答案 0 :(得分:1)
每个文件都会生成一次。这是因为编译器对每个文件运行一次,并且不知道将在另一个文件中定义相同的函数。
使用--out标志仅在输出文件的顶部插入此函数一次。但是,目前在Visual Studio中没有选项可以使用此标志。但是,您可以像Steve提到的那样手动编辑项目文件。
<Target Name="BeforeBuild">
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc" --out final.js @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>