web-dev-qa-db-ja.com

NodeJS JSファイルをTypeScriptにインポートする方法

TypeScriptは初めてです。私は現在NodeJSを学習していますループバック4 TypeScript言語を使用するフレームワーク。そして私の質問は、JSファイルでエクスポートされた関数、クラスをTSファイルにインポートする方法です。いくつかの方法で検索した後、それでもまだ機能しません。次に例を示します。

  // /src/index.ts
    import {plus} from './lib/test';

    console.log(plus(1,2));

// /src/lib/test.js
    export function plus(x, y) {
      return x + y;
    }

私はまた、このような定義TypeScriptを使用してみます

// /src/lib/test.d.ts
export declare function plus(x: number, y: number): number;

しかし、この関数をindex.tsファイルにインポートするとエラーが発生します

エラー:Function.Module._resolveFilename(module.js:543:15)でモジュール './lib/test'が見つかりません

3
Quoc Van Tang

Tsconfig.jsonは宣言をエクスポートするため、allowJsが有効になっていないようです。

TypeScriptファイルにしたくない理由はありますか? test.jsをtest.tsに変更した場合、それを.tsにすると、インデックスファイルで認識されるようになります。

更新

この時点に到達するための完全なチャット履歴は、- ここ にあります。見つかったテストに使用するリポジトリ ここ

@ maaz-syed-adeebの言及がうまく機能するので、とても簡単な解決策です:

import { path } from './lib/test.js'

拡張機能が重要なのは、TypeScript環境では、定義ファイルがJavaScriptファイルよりも優先されるためです。そのため、モジュールのインポートが爆発していました。

.js拡張子を指定しないようにするには、次のようにディレクトリ構造を設定することもできます。

src
|- index.ts
|- lib
  |- test.js
  |- test.d.ts
  |- index.[js|ts]

./lib/indexファイルで、テストからすべてエクスポートします。

//./src/lib/index.[js|ts]
export * from './test'

そして、libからすべてインポートします。

// ./src/index.ts
import { path } from './lib'
// or
import { path } from './lib/test.js'

JavascriptとTypeScriptのブレンドを使用している場合(たとえば、既存のコードベースを使用してTypeScriptに移行しようとしている場合)、tsconfig.jsonを更新して、IDEで警告が表示されないようにする必要があります。

{
  "compilerOptions": {
    "allowJs": true,
    "declaration": false
  }
}

これは、javascriptファイルがTypeScriptファイルと一緒に宛先ディレクトリに変換されるようにするためです。

5