1. ホーム
  2. typescript

[解決済み】Typescript : require文はimport文の一部ではない

2022-01-30 05:10:44

質問

タイプスクリプトのバージョン2.2.2

UserRoutzr.ts の中にこの require を書きました。

const users = <IUser[]> require(path.join(process.cwd() + "/data"));

TSLintは次のような警告を出しています。

require statement not part of an import statement

に変更すると、:

import users = <IUser[]> require(path.join(process.cwd() + "/data"));

そして、エラーを発生させています。

TS1003 Identifier expected

このrequireはどのように書き直せばいいのでしょうか? フィードバックありがとうございます。

どのように解決するのですか?

TypeScriptのモジュールは、ES6モジュールの実装です。ES6モジュールは静的です。あなたの問題は、動的なパスに起因しています。 path.join(process.cwd() + "/data") . コンパイラはコンパイル時にどのモジュールか判断できないし、リンターはそれが any .

モジュールへの静的パスを使用する必要があります。コンパイル時にTypeScriptがそれを解決する。そして、それは正しいエクスポートされた型に影響を与える( IUser[] ) から users .

import users = require("./yourModuleThatExportsUsers");

お知らせ もし、あなたのモジュール data は単なるデータを含むので、それをJSONファイルに変更し、ロード(Node.js)またはバンドル(Webpack)することを検討することができます。

UPDATE (2019年5月より) ・・・・・・・・・することも可能です。 ダイナミックインポート TypeScriptは静的なパスと動的なパスを受け入れることができます。

const users = await import("./yourModuleThatExportsUsers");

こちらもご覧ください。 TypeScript 2.4 リリースノート