web-dev-qa-db-ja.com

Typescript lodash1つの関数のデフォルトのエクスポートなし

私は次のようにlodashから1つの関数のみをインポートしようとしています:

import get from 'lodash/get';

すでにlodashと@types/lodashをインストールしましたが、次のエラーが発生します。

@ types/lodash/get/index "'にはデフォルトのエクスポートがありません。)

15
ng2user

TypeScriptでimport isEqual from 'lodash/isEqual';を使用し、コンパイラオプション(tsconfig.json)でesModuleInteropフラグを使用して、lodashから単一の関数をインポートできます。

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "lib": ["es6", "dom"],
    "moduleResolution": "node",
    "esModuleInterop": true,
    ...
  }
}
6
Alex Beauchemin

次を使用して、同様のエラーに対してこれを機能させることができました。

import * as get from 'lodash.get';
2
Michael

私がこれを解決できる唯一の方法は次のようなものでした:

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

そしてそれはとにかく失敗します(Reactmomentおよび他のパッケージではありません、ただし、このlodash.getパッケージの場合のみ)。したがって、醜いrequireがトリックを実行します(ES6インポート構文が壊れているという理由だけで醜いという意味です。つまり、コードの一貫性が失われています)。

0
mayid