【问题标题】:How to augment an UMD module definition in TypeScript 2如何在 TypeScript 2 中扩充 UMD 模块定义
【发布时间】: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


    【解决方案1】:

    您还可以声明一个带有 IPMessaging 子命名空间的 twilio 命名空间,并将“Twilio”导出为全局命名空间。

    这将使 Twilio 显示为模块的可导入目标

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2018-09-06
      • 2017-03-02
      相关资源
      最近更新 更多