私は次のようにlodashから1つの関数のみをインポートしようとしています:
import get from 'lodash/get';
すでにlodashと@types/lodashをインストールしましたが、次のエラーが発生します。
@ types/lodash/get/index "'にはデフォルトのエクスポートがありません。)
TypeScriptでimport isEqual from 'lodash/isEqual';
を使用し、コンパイラオプション(tsconfig.json)でesModuleInterop
フラグを使用して、lodashから単一の関数をインポートできます。
例
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"lib": ["es6", "dom"],
"moduleResolution": "node",
"esModuleInterop": true,
...
}
}
次を使用して、同様のエラーに対してこれを機能させることができました。
import * as get from 'lodash.get';
私がこれを解決できる唯一の方法は次のようなものでした:
import get = require("lodash.get");
ここで同様の例を参照してください: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/1416
他の提案、import * as get from 'lodash.get';
適切な構成がない場合、次のように失敗します。TS2497:このモジュールは、「esModuleInterop」フラグをオンにしてデフォルトのエクスポートを参照することにより、ECMAScriptのインポート/エクスポートでのみ参照できます。
そして実際、私はこれをtsconfig.jsonに持っています:
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
そしてそれはとにかく失敗します(React、momentおよび他のパッケージではありません、ただし、このlodash.getパッケージの場合のみ)。したがって、醜いrequire
がトリックを実行します(ES6インポート構文が壊れているという理由だけで醜いという意味です。つまり、コードの一貫性が失われています)。