如何阻止TypeScript在文件之间使用全局作用域? (重复执行功能)

时间:2019-02-17 02:30:27

标签: typescript

我似乎对此质量检查有一个相反问题:Typescript Global Variable across Files-我项目中的TypeScript编译器似乎总是在不相关的*.ts文件中使用全局范围。

我正在将Visual Studio 2017与TypeScript 3.1 SDK一起用于ASP.NET Core 2.2项目中。

我有各种特殊的TypeScript文件,它们在保存时生成*.js输出,并且某些页面引用了这些*.js文件。

这些TypeScript文件是不相关的,但是对于某些事件处理程序,它们具有相同的函数名,而TypeScript会抱怨。我注意到一个文件中的IntelliSense可“查看”同一项目中其他*.ts文件中的声明和类型。两个TypeScript文件中都没有/// <references标头。

例如:

/MyWebProject/wwwroot/AccountEditPage.ts

window.addEventListener( 'DOMContentLoaded', afterLoad );

function afterLoad( e: Event ) {
    // do stuff
}

/MyWebProject/Views/Accounts/Edit.cshtml

<head>
    <script src="~/AccountEditPage.js" async="async" type="text/javascript"></script>
</head>

/MyWebProject/wwwwroot/ProductEditPage.ts

window.addEventListener( 'DOMContentLoaded', afterLoad );

function afterLoad( e: Event ) {
    // do stuff
}

/MyWebProject/Views/Products/Edit.cshtml

<head>
    <script src="~/ProductEditPage.js" async="async" type="text/javascript"></script>
</head>

我的项目中没有tsconfig.json,但是我的MyWebProject.csproj具有此功能(为便于阅读而添加了空格):

<PropertyGroup>
    <!-- etc -->
    <TypeScriptToolsVersion>            3.1    </>
    <TypeScriptTarget>                  ES5    </>
    <TypeScriptJSXEmit>                 None    </>
    <TypeScriptModuleKind>              None    </>
    <TypeScriptCompileOnSaveEnabled>    True    </>
    <TypeScriptNoImplicitAny>           True    </>
    <TypeScriptRemoveComments>          False    </>
    <TypeScriptOutFile />    
    <TypeScriptOutDir />
    <TypeScriptGeneratesDeclarations>   False    </>
    <TypeScriptNoEmitOnError>           True    </>
    <TypeScriptSourceMap>               True    </>
    <TypeScriptMapRoot />
    <TypeScriptSourceRoot />
</PropertyGroup>

<!-- etc -->
<ItemGroup>
    <Content Remove="wwwroot\AccountEditPage.ts" />
    <Content Remove="wwwroot\ProductEditPage.ts" />
</ItemGroup>
<ItemGroup>
    <TypeScriptCompile Include="wwwroot\AccountEditPage.ts" />
    <TypeScriptCompile Include="wwwroot\ProductEditPage.ts" />
</ItemGroup>

我看不到“所有文件共享全局范围”的任何选项。

0 个答案:

没有答案