如何干净地打包Typescript顶级外部模块

时间:2013-10-22 01:21:55

标签: typescript

我正在研究用Typescript编写的NPM包。以下是我目前打包所有类和接口的方法。这可行,但似乎是非常重复,不是很干净(特别是空类和接口扩展)。我怎么能改善这个?

编辑:我已将主NPM文件更改为使用类扩展。这使得一切都更加可维护,因为不再有重复。但它可能会慢一些,因为每个类都被有效地定义了两次。

deck.ts(主要的NPM文件)

/// <reference path="../d.ts/DefinitelyTyped/node/node.d.ts" />

import DeckDatabasePostgresClient = require('./Database/Postgres/Client');
import DeckDatabasePostgresConfigInterface = require('./Database/Postgres/ConfigInterface');
import DeckApp = require('./App');
import DeckRoute = require('./Route');
import DeckRouter = require('./Router');

module Deck {
    export module Database.Postgres {
        export class Client extends DeckDatabasePostgresClient {}
        export interface ConfigInterface extends DeckDatabasePostgresConfigInterface {}
    }
    export class App extends DeckApp {}
    export class Route extends DeckRoute {}
    export class Router extends DeckRouter {}
}

export = Deck;

在Typescript中是否可以使用类似的内容?

module Deck {
    export import App = require('./App');
}

目前,这会导致以下错误:

Import declarations in an internal module cannot reference an external module.

1 个答案:

答案 0 :(得分:1)

我认为课程是TypeScript中的一等公民。例如:

class Foo{}

var bar = Foo; 
var baz = new bar(); 

// Same as :
var bar: typeof Foo = Foo; 
var baz:Foo = new bar();

所以,你可以按照以下方式做点什么:

class DeckClass{};

export = DeckClass

declare module 'Deck'{
    export var DeckClass:typeof DeckClass;  
}