【发布时间】:2017-02-18 16:53:22
【问题描述】:
我在我的应用程序(不是 Twilio 节点)上使用 Twilio.js 库,并且该库没有可用的模块或类型。只有一个可以使用的Twilio 全局变量。
在 IDE 中避免错误的最简单的环境声明是这样的:
declare const Twilio: any;
但我想更进一步,为此我一直在阅读 TypeScript 手册和其他一些资源。我特别关注this link。
这是我目前所拥有的:
declare const Twilio: Twilio.Base;
declare namespace Twilio {
export interface Base {
Device: Device;
}
export interface Device {
ready(handler: DeviceCallback): void;
}
export interface DeviceCallback {
(device: Device): void;
}
}
这是可行的,但它只是一个示例,并不完整。举个例子,现在就足够了:)
但我的问题是三方面的:
- 鉴于上面的简短示例,您会采取不同的做法吗?
- 如果我从所有接口中删除
export关键字,它仍然有效。我还应该离开它吗?它有什么作用? -
鉴于
Twilio.Device.ready(this.handleTwilioDeviceReady.bind(this));的用法,当我将鼠标悬停在 IDE 上时,我会得到以下信息:-
Twilio:const Twilio: Twilio.Base -
Twilio.Device:(property) Twilio.Base.Device: Twilio.Device Twilio.Device.ready:(method) Twilio.Device.ready(handler: Twilio.DeviceCallback): void-
我怎样才能摆脱出现在 IDE 中的
Twilio.Base而改为显示:-
Twilio:const Twilio: Twilio -
Twilio.Device:(property) Twilio.Device: Twilio.Device
-
-
【问题讨论】:
-
看起来 Twilio 有一个类型定义,可通过 npm 以
@types/twilio形式使用:npmjs.com/package/@types/twilio -
@Seamus 那是给Twilio Node.js helper library,不是给我正在使用的那个。忘记链接了...
-
仅供参考,
Twilio.Device.ready(() => this.handleTwilioDeviceReady());会更惯用 TypeScript :) -
@JKillian 感谢您的建议。虽然我更喜欢autobin-decorator,但我有一个issue让它工作:(
标签: typescript namespaces global declaration