【发布时间】:2017-03-04 00:01:53
【问题描述】:
我目前正在为应该通过新的@types 方法使用的两个库编写 TypeScript 定义文件。两者都遵循UMD模式。您可以将它们作为模块使用,也可以在 <script> 标记中引用它们。
第一个很直接,因为两种消费方式如下所示:
import { AccessManager } from 'twilio-common';
const manager = new AccessManager('XXXXXXXX');
或
const manager = new Twilio.AccessManager('XXXXXXXX');
我通过使用 TypeScript 2 的新 export as namespace 功能解决了这个问题:
import { Promise } from 'es6-promise';
export as namespace Twilio;
export class AccessManager {
constructor(initialToken: string);
identity: string | null;
// omitted
}
现在对于第二个模块,这变得有点棘手,以及我为什么要写在这里。
通过模块消费:
import { AccessManager } from 'twilio-common';
import { Client } from 'twilio-ip-messaging';
const manager = new AccessManager('XXXXXXXX');
const client = new Client(manager);
通过<script>标签消费:
const manager = new Twilio.AccessManager('XXXXXXXX');
const client = new Twilio.IPMessaging.Client('XXXXXXXX');
如您所见,在第二个定义文件中导出的内容应该使用如下行导出:
export as namespace Twilio.IPMessaging;
但是这不起作用。由于我在这里找不到合适的解决方案,因此我向 StackOverflow 寻求建议。
提前非常感谢!
多米尼克
【问题讨论】:
标签: typescript typescript-typings typescript2.0