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

标签 typescript

我正在开发一个用 Typescript 编写的 NPM 包。以下是我目前如何打包它的所有类和接口(interface)。这行得通,但似乎很重复而且不是很干净(特别是空类和接口(interface)扩展)。我该如何改进?

编辑:我已经更改了主 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.

最佳答案

我相信类是 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;  
}

关于typescript - 如何干净地打包 Typescript 顶级外部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19507496/

相关文章:

javascript - 目录未创建

typescript - 使用 angular2 组件(没有 forwardRef)实现递归结构?

javascript - 从 html 输入中获取值

node.js - 有没有办法检查当前导出是否已在 typescript 中导入?

Webstorm 中使用 "import"语句的 TypeScript 问题

typescript - 如何从 QuickPick 中删除 'OK' 按钮

javascript - 为什么将我的用户 ID 传递到我的 URL 时未定义?

node.js - 处理程序未定义或未导出

angular - 在 Angular 2 服务中导入自定义声明文件时出现 "Error: Debug Failure. False expression: Output generation failed"

javascript - 传单库的类型是什么意思?