Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何捆绑(用于浏览器)类型脚本外部模块,生成d.T并在客户端应用程序中使用?_Javascript_Angularjs_Commonjs_Typescript1.5 - Fatal编程技术网

Javascript 如何捆绑(用于浏览器)类型脚本外部模块,生成d.T并在客户端应用程序中使用?

Javascript 如何捆绑(用于浏览器)类型脚本外部模块,生成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

我正在开发一个typescript框架,在angularjs之上开发单页应用程序。作为一种开发实践,框架内的每个类都作为单独的文件实现,而这个文件又变成了一个typescript外部模块。我正在开发的IDE是带有typescript 1.5的VS2015

square.ts

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