2017-01-30 2 views
0

Grundsätzlich will ich nicht lodash-Funktionen importieren, ist jede Datei. Ich möchte sie in einem globalen Namespace (z. B. L) verfügbar machen. Ich möchte nicht die ganze lodash-Bibliothek importieren, sondern nur wenige Funktionen importieren. Ich versuche Dinge zu verfolgen, aber dann verliere ich die Art der Unterstützung.Wie können Typdefinitionen einer Funktion beibehalten werden, während sie im globalen Namespace (Objekt) verfügbar gemacht werden?

interface Lod { 
    head: Function 
} 

interface Window { 
    L: Lod; 
} 

import head = require('lodash/head'); 

window.L = { 
    head: head 
} 

jetzt also wenn ich Kopf() dann IDE gibt mir Intellisense-Unterstützung (zeigen Fehler wie kein Argument übergeben wird, aber ich soll einen Array geben) und i Kompilierungsfehlern von Typoskript auch erhalten sagen, dass ich falschen Parameter bin vorbei Kopf (was richtig ist).

Aber wenn ich window.L.head() verwende, dann bekomme ich keine Hilfe von intellisense (keine Fehler) und typescript geben auch keinen Fehler bei der Kompilierung (was falsch ist, sollte ich Fehler bekommen) .

Vielen Dank für Ihre Hilfe im Voraus!

+0

Welche Informationen fehlen Ihnen von Intellisense? Wenn Sie keine Compiler-Fehler bekommen, sollte es in Ordnung sein und Ihr Intellisense sollte Dinge aufgreifen. –

+0

Hi @NitzanTomer, Danke für die Untersuchung. Wenn ich head ('false', 'parameters') benutze, bekomme ich intellisense help und errors from typscript compiler auf der Kommandozeile (was richtig ist). Aber wenn ich window.L.head ('falsch', 'Parameter') benutze, bekomme ich keine Fehler intellisense oder Befehlszeile (was falsch ist ... ich sollte bekommen, da ich falsche Argumente übergebe) –

Antwort

0

Wenn Sie head direkt verwenden, kann der Compiler die Definitionen darin überprüfen, weshalb das Intellisense funktioniert und Sie Fehler erhalten.

Aber Ihre Definition von Lod.head ist ein Function, weshalb der Compiler in Ordnung ist mit Ihnen übergeben Argumente.

Sie sollten dies tun:

import head = require('lodash/head'); 

interface Lod { 
    head: typeof head 
} 
Verwandte Themen