我正在研究用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.
答案 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;
}