2017-05-31 7 views
2

Nodeドキュメントにあるようなラップされたクラスを提供するNode C++ Addonがあります。私はaddonをrequire()して、クラスを作成してインスタンスを作成することができます。ノードC++アドオンのTypescript宣言ファイル

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

これで同じようにTypeScriptを使用したいと思います。私はこの仕事をするために.d.tsファイルとインポートステートメントの適切な組み合わせを見つけることができません。理想的には、私のクラスがモジュール内にあり、文字列を受け取るコンストラクタを持っていると宣言したいと思います。私はそれからちょうどいい:

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

これの例は誰も見ている?

答えて

3

私は最終的にそれを持っていると思います。

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によって示唆されるように、私は次のように持っているmyaddon.tsファイルを作成しました – ZachB

関連する問題