有没有办法在TypeScript上使用没有d.ts定义的npm包

时间:2016-12-22 22:50:28

标签: javascript node.js typescript npm

有没有办法在TypeScript和节点js上使用没有d.ts定义的npm包?如果是的话,我怎么能实现呢?

目前,我有类似的东西,它会抛出一个错误,告诉我“找不到模块'node-rest-client'”,因为.d.ts文件不存在。

import * as NodeRest from 'node-rest-client';

export class MyClass {
}

EDIT 我这样解决了:

/// <amd-dependency path="node-rest-client" />
let NodeClient = require('node-rest-client');
export class MyClass { }

这个解决方案很好,还是更好地实现了丹的回应?

1 个答案:

答案 0 :(得分:1)

我会重新考虑添加类型,至少在它的基本形式上。

你会错过使用打字稿的主要原因

但是,有时候不方便,或者你想要专注于当前的任务。

在这种情况下,在“节点”或使用捆绑包(webpack,...等)时

你可以随时诉诸“要求”

greeter.js

module.exports = {
    greet: () => "hello"
}

greeter.test.ts

import * as assert from "assert";
interface IGreeter {
    greet(): string;
}
const greeter: IGreeter = require("./greeter");
describe("amodule", () => {
    it("works", () => {
        assert.equal(greeter.greet(), "hello");
    });
});

或简单地(noImplicitAny:false)

require("./greeter").greet()

或(noImplicitAny:true)

(require("greeter") as any).greet()