wake-up-neo.com

Korrekter Import und Gebrauch von lodash in Angular

Ich war in der Lage, eine lodash-Methode in Angular durch eine Importanweisung zu verwenden, die wie folgt aussah:

import {debounce as _debounce} from 'lodash';

Ich erhalte jetzt die folgende Fehlermeldung, wenn Sie diese Anweisung verwenden:

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

Das einzige, was ohne Fehler kompiliert werden kann, ist diese Anweisung:

import * as _ from 'lodash'; 

In meinem Code ändere ich _debounce() in _.debounce(). Ist dies der einzige (und/oder korrekte) Weg, dies zu tun? Gibt es eine Möglichkeit, nur Debounce zu importieren, oder spielt es keine Rolle beim "Treeshaking"? Mir ist klar, dass ich meine eigene Debounce-Funktion schreiben kann, aber ich interessiere mich hauptsächlich für die "richtige" Vorgehensweise.

p.s. Andere Varianten, die ich ausprobiert habe (jede hat eine Art Fehler): 

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

Zu Ihrer Information ... Ich verwende folgende Versionen:

Winkel: 2.4.5

TypScript: 2.1.5 

Winkel-cli: 1.0.0-beta.26

26
jloosli

(wenn Sie sich für Baumrütteln interessieren, siehe update)}
Ich denke, um lodash in Ihr Projekt einzubringen, haben Sie es bereits getan 

npm install lodash --save
npm install @types/lodash --save-dev

Wenn Sie nur benötigte Funktionen importieren möchten, sollten Sie Folgendes tun:

import * as debounce from 'lodash/debounce'

oder 

import { debounce } from "lodash";

Verwenden Sie es als:

debounce()

BTW: Möglicherweise müssen Sie Ihre TypeScript-Version auf 2.0.10 zurückstufen, wenn Sie den Winkel 2.x verwenden.

npm install [email protected] --save-dev

UPDATE:

Vor kurzem wurde mir klar, dass lodash package nicht vom Baum verwackelt werden kann. Wenn Sie drei Schütteln benötigen, verwenden Sie stattdessen einfach lodash-es .

npm install lodash-es --save
npm install @types/lodash-es --save-dev

import debounce from 'lodash-es/debounce'
55
Kuncevič

Ich hatte dasselbe Problem und es begann zu funktionieren, nachdem ich "@ types/lodash" auf Version "4.14.50" geändert hatte.

0

Dies löste es für mich, wie unter "aktualisiert" von Kuncevič geschrieben und von Roy bearbeitet.

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

import { debounce as _debounce } from 'lodash';

Ich musste die es-module importieren, sonst bekam ich Kompilierungsfehler - höchstwahrscheinlich aufgrund meiner Konfiguration (tsconfig.json).

0
Marcus Ekström