在大型软件中,将代码分解为项目是个好主意。例如,有一个框架项目,它包含一些名为Company.Framework的项目中的所有基类,还有一些项目使用了Company.ProductA、Company.ProductB等共享代码。
是否可以在其他项目中引用.ts
文件,例如仅引用其dll
,而不是添加项目,这样框架项目就可以对业务开发人员隐藏。
问题是如何在其他项目中引用.ts
文件,而不将这些项目添加到解决方案中。例如,只需添加它们的dll即可。
发布于 2015-04-28 20:49:12
我相信您知道这一点,但是类型记录文件(.TS)被编译成Javascript文件(.JS)。类型记录文件和生成的Javascript文件都不会在DLL中结束。DLL只包含服务器端代码,而类型记录/Javascript是客户端代码。
因此,尝试从您的ProductA项目中添加引用到框架项目中的DLL并不会引入您的框架项目中的任何类型记录文件。
只要最终呈现的HTML页面包括来自ProjectA和框架的生成Javascript的标记,那么一切都会很好,即使这两个项目之间没有连接。如果您真正想要的是为框架类编写代码,而您正在ProjectA中编写类型记录,那么您应该按照@WedneyYuri和@DavidSherret的建议来做,这就是将框架项目中的.d.ts文件添加到您的ProjectA项目中。
发布于 2015-05-01 07:59:33
管理属地
最简单的解决方案是使用像鲍尔这样的包管理器
在终端上:创建一个空文件夹并启动一个空的bower存储库:
$ bower init
对于每个定义文件,使用以下命令:
$ bower install [URL] --save-dev
jQuery定义文件示例
$ bower install https://raw.githubusercontent.com/borisyankov/DefinitelyTyped/master/jquery/jquery.d.ts --save-dev
多亏了保龄球,你可以在这里使用任何网址。要获得更多信息,请访问bower文档。
编译
在运行命令definitions.d.ts的同一个文件夹中创建一个文件(名称不重要) $ bower init
。
对于每个已安装的定义文件,必须手动添加,在该文件中添加新行:
添加jQuery和angularjs后的示例
/// <reference path="jquery.d/index.ts" />
/// <reference path="angular.d/index.ts" />
现在,在您的项目中,只需要包含对definitions.d.ts文件的引用。
运行代码
要使代码工作,您需要.js
文件。在开发环境中,我使用bower管理独立文件夹中的依赖项,并在html中手动添加.js
文件。在生产中,使用任何工具将它们连接起来。
TSD (TypeScript DefinitelyTyped定义管理器)
在不久的将来,包管理器将可以选择从任何地方安装模块。还没准备好,但这是个目标。
TSD未来的目标是从任何源无缝地支持任何TypeScript定义文件。默认情况下,您仍然应该能够搜索绝对类型的存储库并从那里安装。然而,将把更多的重点放在支持独立定义上,特别是那些与模块捆绑在一起的定义。https://github.com/DefinitelyTyped/tsd/issues/150
https://stackoverflow.com/questions/29857469
复制相似问题