116

クラスnode_modules内から(から) 通常の NodeJS モジュールをロードするにはどうすればよいですか?TypeScript

.ts以下を含むファイルをコンパイルしようとすると:

var sampleModule = require('modulename');

このスコープでは require を使用できないコンパイラ プロンプトが表示されます。(その行はファイルの先頭にあります)。

4

5 に答える 5

118

シンボルが見つからない場合、Typescript は常に文句を言います。コンパイラには、 のデフォルト定義のセットが付属しておりwindowdocumentそのような定義は というファイルで指定されていますlib.d.ts。このファイルで grep を実行するrequireと、関数の定義が見つかりませんrequire。したがって、次のdeclare構文を使用して、この関数が実行時に存在することをコンパイラー自身に伝える必要があります。

declare function require(name:string);
var sampleModule = require('modulename');

私のシステムでは、これは問題なくコンパイルされます。

于 2012-10-05T08:26:40.210 に答える
79

正しい構文は次のとおりです。

import sampleModule = require('modulename');

また

import * as sampleModule from 'modulename';

次に、TypeScript を でコンパイルします--module commonjs

index.d.tsパッケージにファイルが付属しておらず、そのパッケージにプロパティpackage.jsonがない場合、は何が参照されているかわからないと吠えます。このためには、 http://Definitivelytyped.org/でファイルを見つけるか、自分で作成する必要があります。"typings"tsc'modulename'.d.ts

Node.js のコードを書いている場合は、 http://Definitivelytyped.org/ からのファイルも必要になりnode.d.tsます。

于 2016-02-03T07:47:12.270 に答える