有没有办法在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 { }
这个解决方案很好,还是更好地实现了丹的回应?
答案 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()