2017-03-02 3 views
0

Ich versuche, einer importierten Deklaration einen Konstruktor hinzuzufügen. Laut the docs sollte dies funktionieren. (Kapitel Adding using an interface)Warum kann ich keine Mitglieder eine importierte Deklaration hinzufügen?

Hier ist mein Code:

import { ObjectID } from 'mongodb'; 

interface ObjectID { 
    new(b: Buffer): ObjectID; 
} 

bekomme ich folgende Fehlermeldung:

Import Erklärung in Konflikt mit lokaler Erklärung ‚ObjectID'at Linie 2 col 10

Als Workaround habe ich die Schnittstelle umbenannt und eine Typ Assertion zu jedem und dann zu meiner Schnittstelle. Das ist gut genug, da ich es nur an einem Ort brauche, aber ich frage mich immer noch, warum es nicht funktioniert.

Antwort

0

Nun, Sie importieren und lokal deklarieren, so ist der Fehler korrekt. Für importierten Code sollten Sie wahrscheinlich stattdessen eine declaration erstellen.

Aber in diesem Fall scheinen Sie keine Deklaration für mongodb zu erstellen. Definition files already exist. Sie können einfach tun

npm install @types/mongodb --save-dev 

So erhalten Sie alles für Sie deklariert. Here's the constructor in question.

+0

Ich benutze tatsächlich bereits diese Typdefinition (Entschuldigung, sollte explizit angegeben haben). Der Konstruktor, mit dem Sie verknüpft sind, akzeptiert nur Zeichenfolgen und Zahlen, was gemäß den API-Dokumenten korrekt ist. Aber es gibt auch die undokumentierte Möglichkeit einen Puffer zu übergeben. Das wollte ich der bestehenden Deklaration hinzufügen. – ctusch

Verwandte Themen