Nic*_*kon 28 reference visual-studio typescript
是否可以在两个TypeScript项目之间进行引用?假设我们有以下项目结构:

Module1.ts 包含:
module TestModule {
export interface Interface1 {
}
}
Run Code Online (Sandbox Code Playgroud)
Module2.ts 包含:
module TestModule {
export interface Interface2 extends Interface1 {
}
}
Run Code Online (Sandbox Code Playgroud)
Test1被引用Test2.我得到一个错误Could not find symbol 'Interface1'在Module2.ts.它在一个项目中工作,但我不知道如何从其他项目中看到它...也许它现在不可能.
[编辑1.]
当我尝试使用TestModule.Interface1模式时,我得到相同的错误(以不同的方式说).但智能感知我看到了Interface1:

[编辑2.]
我注意到我无法使用其他项目中的文件.即使我/// <reference ...在第一个项目中添加了正确的引用()并链接了所有文件.
Dav*_*ret 23
有很多方法可以做到这一点.
选项1 - 项目参考(TypeScript 3.0+)
如果您使用的是TypeScript 3.0,请查看使用项目引用.在这里阅读更多.
选项2 - 构建脚本
使用gulp-typescript,grunt-ts或只是批处理脚本之类的东西将文件复制到主项目的文件夹中.
或者,在Visual Studio中运行构建事件,将事件复制到主项目.
选项3 - npm包
如果您使用npm,则可以为其他项目创建一个包.然后,您可以在主项目中使用您的包.指定本地依赖项是一种很好的方法,可以使用像sinopia这样的私有存储库服务器.我从来没有使用它,但看起来它会很好用.
选项4 - NuGet包
您可以考虑创建一个nuget包,然后在本地安装它.
选项5 - --declaration --outDir编译器选项
您可以将--outDir编译器选项或outDir属性设置tsconfig.json为您的其他项目的目录,然后也编译它,--declaration以便它也生成声明文件(.d.ts).例如:--declaration --outDir ../Test1/External.
原始答案(使用--out)
如果右键单击库项目并单击属性,则可以在Visual Studio中执行类似操作.在TypeScript Build选项卡中,选中选项Combine JavaScript output into file并指定主项目中您想要的位置(例如$(SolutionDir)/TypedApp/External/TypedLibrary.js).然后还要检查Generate declaration files以生成.d.ts文件.

一旦做到这一点,建立自己的图书馆项目,然后包括.js,并.d.ts在您的主项目..js在html中包含该文件,并.d.ts在您的打字稿文件中引用该文件.

每次重建库项目时,它都会自动使用更改来更新主项目.
Mar*_*627 10
@dhsto建议的解决方案有效但我找到了使用链接文件夹的替代方案.我在本文中详细介绍了它,以下是如何实现它:
它可以通过创建一个文件夹来保存您的引用来实现,我喜欢将其命名为"_referencesTS",该文件夹将包含Test1文件的所有链接.这可以单独完成,但如果必须为每个新的TS文件完成,则会变得非常麻烦.然而,链接文件夹将链接其下的所有文件,这可以通过编辑csproj文件来完成.
要编辑文件,请右键单击Test2项目并单击" Unload Project",然后右键单击该项目并单击" Edit Test2.csproj".导航到<ItemGroup>包含<TypeScriptCompile>标记的内容并插入以下代码:
<TypeScriptCompile Include="..\Test1\**\*.ts">
<Link>_referencesTS\%(RecursiveDir)%(FileName)</Link>
</TypeScriptCompile>
Run Code Online (Sandbox Code Playgroud)
在Test1中替换TS文件位置的相对路径,这使用通配符(*)链接*.ts所有子文件夹中的所有.ts文件(由其指定)(由此指示\**\).
这些文件夹中的TS文件现在将在Test2中显示为链接,允许自动打字稿引用.
注意:此方法的唯一缺点是,当在链接文件夹中将新文件添加到Test1时,用户必须卸载并加载项目或关闭并打开解决方案,以使其显示在Test2中.
对事态感到沮丧,我写了一个NuGet包,主要解决了这个问题.使用NuGet包你可以只添加一个项目到另一个项目的引用,它将以一种安全的方式复制文件,不会意外编辑错误的文件,仍然提供智能感知和调试.
详细信息可以在Readme.md中找到,或者您可以安装NuGet包并运行(我建议至少阅读如何使用部分).
https://github.com/Zoltu/BuildTools.TypeScript.FromReferences
| 归档时间: |
|
| 查看次数: |
11203 次 |
| 最近记录: |