2017-05-31 66 views
2

我有一個節點C++插件,它提供了一個與Node文檔中類似的包裝類。我可以要求()我的插件,然後得到我的類的構造函數來創建一個實例。節點C++插件的Typescript聲明文件

const { MyClass } = require('myaddon'); 
const obj = new MyClass('data'); 

現在我想用TypeScript來做同樣的事情。我找不到.d.ts文件和導入語句的正確組合,以使其工作。我想理想情況下我想聲明我的類在模塊中,並有一個構造函數接受一個字符串。那麼我可以這樣做:

import { MyClass } from 'myaddon'; 
const obj = new MyClass('data'); 

這樣的人的任何例子,見過?

回答

3

我想我終於擁有它了。正如@ZachB建議,我創建了具有以下一個myaddon.ts文件:

const myaddon = require('./build/release/myaddon') 

export interface MyClass { 
    myMethod(arg: string): number 
} 

export var MyClass: { 
    new(param: string): MyClass 
} = myaddon.MyClass 

然後使用它:

import { MyClass } from 'myaddon' 

const thing: MyClass = new MyClass('something') 
const answer: number = thing.myMethod('blah') 
-1

也許有這樣做的更好的方法,但是我用的是以下模式:

// bindings.ts 
// Declare the interface of your addon: 
export interface MyBindings { 
    myMethod1: (arg1: number) => null; 
} 
// Load it with require 
var myClass: MyBindings = require("./build/release/myaddon"); 
export default myClass; 

然後用import bindings from "../bindings"從我模塊的其他地方使用它。

+0

(?爲什麼downvote護理講解) – ZachB