【发布时间】:2018-06-24 12:23:04
【问题描述】:
在我的 node/typescript 项目中,我想使用 thingspeakclient 包。该包没有任何现有的类型定义文件,因此我决定编写一个(这是我第一次)。
我有什么:
- 已创建文件夹
src/@types/thingspeakclient -
使用此内容创建文件
声明模块“thingspeakclient”; 声明接口 TSCKeys { 写键:字符串; 读键:字符串; } 声明类 ThingSpeakClient { 构造函数(选择:任何); attachChannel(channelId: number, keys: TSCKeys, callback: Function): void; }index.d.ts:
现在,在任何带有 import * as TSC from "thingspeakclient"; 的 TS 文件中,我想使用这样的东西:
var a = new TSC.ThingSpeakClient();
但是在运行时我看到了这个错误:
TypeError: TSC.ThingSpeakClient is not a constructor
现在,我只想使用这 1 个函数,是的,这个包真的很简单 - 所以我没有问题将它重写到 TS,但是 我想学习如何编写有效的类型定义...
有没有人可以告诉我我做错了什么??
更新 1: 我做了 cevek 建议的更改,但它仍然不起作用:
用法:
从“thingspeakclient”导入 {ThingSpeakClient};
var a = new ThingSpeakClient({});
被转换成这个Javascript:
var thingspeakclient_1 = require("thingspeakclient");
var a = new thingspeakclient_1.ThingSpeakClient({});
但问题是,当这个JS包直接在JS中使用时,必须这样使用(注意-没有'namespace'):
var tsc = require("thingspeakclient");
var a = new tsc({});
可以看到,require返回的对象是直接作为类使用的...
只是为了清楚起见 - thingspeakclient 包的原始 simplified JS 代码:
完整课程在这里: https://github.com/imwebgefunden/thingspeakclient_node/blob/master/thingspeakclient.js
【问题讨论】:
标签: typescript