现有的Node.js模块VS代码智能感知
问题描述:
考虑以下Node.js的项目结构创建打字稿接口现有的Node.js模块VS代码智能感知
function Customer() {
this.firstname = null;
this.lastname = null;
this.orders = []
}
Customer.prototype.addOrder = function (order) {
this.orders.push(order);
};)
module.exports = Customer
在./index.js
,entities/customer.js
被使用:
let Customer = require('./entities/customer');
let customer = new Customer();
customer.firstname = "John";
customer.lastname = "Doe";
customer.addOrder({ amount: 5, product : 'Apple' })
我该如何声明一个TypeScript interface
来支持VS代码智能感知,不仅显示addOrder(param: any): void
,我将在哪里放置它的一切? 我不想有一个TypeScript实现来替换当前的Customer
模块。
当然,我可以使用JSDoc评论(由于在VS代码莎莎语言服务):
/**
* @param {{amount: number, product: string}} order
*/
但我感兴趣的打字稿版本的了解。
作为奖励,我想成为Order
类型的order
。
答
您可以用d.ts文件看起来像这样实现这一点:
declare module 'customer'
{
export class customer
{
public firstName: string;
public lastName: string;
public addOrder(order: any): void;
}
}
你可以把它放在任何文件夹在根里面一个。让我们说'manual_typings'。
然后在您的index.js:
let Customer = require('./entities/customer');
let c = new Customer();
c.addOrder(123);
而在你tsconfig.js设置"allowJs" = true
希望这有助于。
谢谢,但这是宣布我不想要的实现。订单仍然是任何类型。 –