2016-04-16 43 views
0

考虑以下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.jsentities/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

回答

0

您可以用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

希望这有助于。

+1

谢谢,但这是宣布我不想要的实现。订单仍然是任何类型。 –