web-dev-qa-db-ja.com

Angularでlodashをインポートして使用する正しい方法

以前はAngularで次のようなインポートステートメントを使用してlodashメソッドを使用できました。

_import {debounce as _debounce} from 'lodash';
_

そのステートメントを使用すると、次のエラーが表示されます。

_'"{...}/node_modules/@types/lodash/index"' has no exported member 'debounce'.
_

エラーなしでコンパイルできる唯一のものは、次のステートメントです。

_import * as _ from 'lodash'; 
_

私のコードでは、_debounce()_.debounce()に変更します。それがそれを行う唯一の(および/または正しい)方法ですか?デバウンスのみをインポートする方法はありますか、それとも「ツリーシェーキング」のために重要ではありませんか?私は自分でデバウンス関数を書くことができることを理解していますが、私は主にこれを行う「正しい」方法に興味があります。

追伸私が試した他のバリエーション(それぞれに何らかのエラーが関連付けられています):

_import {debounce as _debounce } from 'lodash/debounce';
import * as _debounce from 'lodash/debounce';
import debounce = require('lodash/debounce');
_

参考までに、次のバージョンを使用しています。

角度:2.4.5

TypeScript:2.1.5

角度-cli:1.0.0-beta.26

29
jloosli

Kuncevičによる「更新」の下に書かれ、Royによって編集されたように、これは私にとってそれを解決しました

yarn add lodash-es
yarn add @types/lodash-es --dev

import { debounce as _debounce } from 'lodash';

Es-modulesをインポートする必要がありました。それ以外の場合は、コンパイルエラーが発生しました-おそらく、構成(tsconfig.json)が原因です。

1
Marcus Ekström

「@ types/lodash」をバージョン「4.14.50」に変更した後、同じ問題が発生し、機能し始めました。

0