3

在对 *.ts 文件生成的代码进行更仔细的检查后,我发现如果你扩展一个类,那么样板__extends函数会被复制多次,就像你扩展任何东西一样多次......这可能是由于我使用 Web编译 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>or<TypeScriptOut>似乎不起作用...

4

1 回答 1

1

它将为每个文件生成一次。这是因为编译器为每个文件运行一次,并且不知道相同的函数将在另一个文件中定义。

使用 --out 标志只在输出文件的顶部插入此函数一次。但是,目前在 Visual Studio 中没有使用此标志的选项。但是,您可以像史蒂夫提到的那样手动编辑您的项目文件。

<Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --out final.js @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

来源:https ://stackoverflow.com/a/15346708/390330

于 2013-05-12T10:24:38.823 回答