是否可以在两个 TypeScript 项目之间进行引用?假设我们有以下项目结构:
Module1.ts
包含:
module TestModule {
export interface Interface1 {
}
}
Module2.ts
包含:
module TestModule {
export interface Interface2 extends Interface1 {
}
}
Test1
在 Test2
中引用.我收到错误 Could not find symbol 'Interface1'
在 Module2.ts
.它在一个项目中工作,但我不知道如何让它在另一个项目中可见......也许现在不可能。
[编辑 1.]
当我尝试使用 TestModule.Interface1
模式,我得到同样的错误(以不同的方式说)。但是 IntelliSense 看到了我的 Interface1
:
[编辑 2.]
我注意到我不能使用其他项目的文件。即使我有一个正确的引用 ( /// <reference ...
) 添加并链接了我的第一个项目中的所有文件。
最佳答案
有很多方法可以做到这一点。
选项 1 - 项目引用 (TypeScript 3.0+)
如果您使用的是 TypeScript 3.0,请查看使用项目引用。阅读更多 here .
选项 2 - 构建脚本
使用像 gulp-typescript 这样的东西, grunt-ts ,或者只是一个批处理脚本,用于将文件复制到主项目的文件夹中。
或者,run a build event在 Visual Studio 中将文件复制到主项目。
选项 3 - npm 包
如果您使用 npm,您可以为您的其他项目创建一个包。然后你可以在你的主项目中使用你的包。 Specifying a local dependency是执行此操作或使用类似 sinopia 的好方法,这是一个私有(private)存储库服务器。我从未使用过它,但看起来效果不错。
选项 4 - NuGet 包
你可以看看creating a nuget package然后 installing it locally .
选项 5 - --declaration --outDir
编译器选项
您可以在 tsconfig.json
中设置 --outDir
编译器选项或 outDir
属性将目录添加到您的其他项目,然后也使用 --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
包含在您的主项目中。在您的 html 中包含 .js
文件,并在您的 typescript 文件中引用 .d.ts
。
每次重建库项目时,它都会自动将更改更新到主项目。
关于visual-studio - 两个项目之间的跨项目引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233108/