TypeScriptバージョン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
これをどのように書き換える必要がありますか?フィードバックありがとう
TypeScriptモジュールは、ES6モジュールの実装です。 ES6モジュールは静的です。問題は、動的パスpath.join(process.cwd() + "/data")
に由来します。コンパイラは、コンパイル時にどのモジュールであるかを判断できません。また、リンターはany
につながる原因を嫌います。
モジュールへの静的パスを使用する必要があります。コンパイル時に、TypeScriptが解決します。そして、それは正しいエクスポートされたタイプ(IUser[]
)からusers
へ。
import users = require("./yourModuleThatExportsUsers");
注意:モジュールdata
にデータのみが含まれる場合、ロード(Node.js)またはバンドル(Webpack)できるJSONファイルに変更することを検討できます。
更新(2019年5月から)— 動的インポート を使用することもできます。TypeScriptは静的および動的パスを受け入れます。
const users = await import("./yourModuleThatExportsUsers");
動的モジュールの読み込み が必要な場合があり、次のようなコードがあります。
import {IUser} from './lib/user';
const users:IUser[] = require(path.join(process.cwd() + "/data"));