Javascript 如何捆绑(用于浏览器)类型脚本外部模块,生成d.T并在客户端应用程序中使用?
我正在开发一个typescript框架,在angularjs之上开发单页应用程序。作为一种开发实践,框架内的每个类都作为单独的文件实现,而这个文件又变成了一个typescript外部模块。我正在开发的IDE是带有typescript 1.5的VS2015 square.tsJavascript 如何捆绑(用于浏览器)类型脚本外部模块,生成d.T并在客户端应用程序中使用?,javascript,angularjs,commonjs,typescript1.5,Javascript,Angularjs,Commonjs,Typescript1.5,我正在开发一个typescript框架,在angularjs之上开发单页应用程序。作为一种开发实践,框架内的每个类都作为单独的文件实现,而这个文件又变成了一个typescript外部模块。我正在开发的IDE是带有typescript 1.5的VS2015 square.ts export class Square { constructor(color) { } } 三角网 export class Triangle { constructor(color: numbe
export class Square {
constructor(color) {
}
}
三角网
export class Triangle {
constructor(color: number) {
}
}
矩形
export class Rectangle {
constructor(color: number) {
}
}
我希望将框架部署为单个js文件,而不是不同的外部模块。因此,我使用了grunt+browserify+tsify组合来捆绑框架。例如,上述所有文件都已传输并合并到framework-production.js(CommonJS模块),如下所示
var config = {
client: {
outDir: './',
out: 'framework-production.js',
options: {
browserify: {
entries: './framework.ts',
extensions: ['.ts'],
debug: true
},
tsify: {
target: 'ES5',
removeComments: true
}
}
}
};
现在我想使用这个库(frameworkproduction.js)来开发一个typescript客户端应用程序
为此,我需要开发一个类型定义文件。tsc生成的默认类型定义文件是外部模块。我不想将其作为单独的外部module.d.ts文件提供,而是将其合并为一个文件。让我们称之为framework-production.d.ts
问题1。是否有任何工具可用于合并d.ts文件
问题2。我看到angular2生成了一个组合的d.ts文件。有谁能帮助我理解angular2(不是Angular1.x)是如何做到这一点的
我已经手动组合/重新分解了d.ts文件,并生成了framework.d.ts,如下所示
问题3。这是定义d.ts文件的正确方法吗
declare module framework {
class Rectangle {
constructor(color: number);
}
class Triangle {
constructor(color: number);
}
class Square {
constructor(color: any);
}
}
declare module "framework" {
export = framework;
}
当我尝试使用framework-production.js并实例化“Square”类时,如下所示
<script src="framework-production.js"></script>
<script data-main="/app" src="/Scripts/require.js" type="text/javascript"></script>
问题4。您能指导我找出我所犯的错误吗?可能重复的
/// <reference path="framework-production.d.ts" />
new framework.Square(1);
Unhandled exception at line 20, column 1 in http://localhost:59182/app.js
0x800a1391 - JavaScript runtime error: 'framework' is undefined