1

typescript プロジェクトでnode-java node_moduleを使用する必要があります。

でも、

var java = require("java");

タイプスクリプトの方法では機能せず、また

import java = module("java");

そのままでは動作しません。

定義ファイルなどが必要になる可能性があることはわかってい ます。https://github.com/borisyankov/DefinitelyTypedのようなプロジェクトがあります。

そうは言っても、自分でやるのは難しすぎると思います。

もっと簡単な回避策はありますか?ありがとう。

4

2 に答える 2

1

最善の方法は、定義ファイルをnode-javaAPI に使用することですが、最初のコード スニペットを使用します。

var java = require("java");

次のように入力するこのノードへの参照を使用できます。

/// <reference path="node/node.d.ts" />

var java = require("java");

java.classpath.push("commons-lang3-3.1.jar");
java.classpath.push("commons-io.jar");

var list = java.newInstanceSync("java.util.ArrayList");

java.newInstance("java.util.ArrayList", function(err, list) {
  list.addSync("item1");
  list.addSync("item2");
});

var ArrayList = java.import('java.util.ArrayList');
var list2 = new ArrayList();
list.addSync('item1');

2 番目のスニペットを使用するには:

import java = module("java");

定義ファイルが必要です。キックスタートnode-java.d.tsとして、次のコードでファイルを作成できます。

module "java" {
    export var classpath: { push(jar: string); };
    export function newInstanceSync(type: string);
    export function newInstance(type: string, callback: (err, list) => any);
    export function import(type: string);
    export function newArray(...item: any[]);
    export function callStaticMethodSync(...args: any[]);
}

そして、このファイルを次のように使用します。

/// <reference path="node-java.d.ts" />

import java = module("java");

java.classpath.push("commons-lang3-3.1.jar");
java.classpath.push("commons-io.jar");

var list = java.newInstanceSync("java.util.ArrayList");

java.newInstance("java.util.ArrayList", function(err, list) {
  list.addSync("item1");
  list.addSync("item2");
});

var ArrayList = java.import('java.util.ArrayList');
var list2 = new ArrayList();
list.addSync('item1');

時間ができたら、 DefinitelyTypedリポジトリにnode-java定義を送信します。

于 2013-03-11T11:38:35.933 に答える
0

これがうまくいかないと言うとき:

var java = require("java");

require型情報がないため、直接呼び出すとエラーが発生すると想定しています。

これを解決する 1 つの方法は、require の型情報を追加することです。

declare var require: (module: string) => any;
var java = require('java');

これは単純な例です - 私の例javaの戻り値のようには型付けされませんが、型情報があればキャストできます:requireany

declare var require: (module: string) => any;
var java = <JavaDefinition> require('java');
于 2013-03-11T10:21:47.617 に答える