2017-12-25 9 views
0

Ich habe eine Reihe einfacher JS-Funktionen, die in meiner index.html-Funktion definiert sind. Ich möchte diese Funktionen deklarieren, um sie in TypeScript-Dateien verwenden zu können. Das ist, was ich tue:Globale Funktionen in einem TypeScript-Modul deklarieren

declare function getHtmlBasePath(): String; 
declare function fbFetchedLoginStatus(): boolean; 
declare function getFbAccessToken(): String; 
declare function setFbAccessToken(token: String); 

Um jedoch zu vermeiden, diese Dateien in jeder Typoskript-Datei erklärt, wo sie verwendet wird, würde Ich mag sie in einer separaten Datei und Import definieren, die Datei, wo immer ich will. Auf diese Weise lösche ich doppelte Deklarationen und ich bekomme auch die Unterstützung der IDE, wenn ich später refactoring machen möchte. Wenn ich diese Deklarationen jedoch in einer TypeScript-Datei definiere und sie importiere, nimmt der TypeScript-Compiler an, dass dies ein Modul ist, das tatsächlich importiert werden muss, während es sich einfach um eine Deklarationsdatei handelt (eher wie eine Header-Datei für eine externe Bibliothek) in C/C++).

Gibt es eine Möglichkeit, dass ein bestimmtes TypeScript keinen anderen Zweck hat als den Satz einer Deklaration, d. H., Wenn Sie es importieren, generiert der TypeScript-Compiler keine require-Anweisungen?

Antwort

0

Der TypeScript-Compiler ist intelligent genug, um diese Deklarationen nicht in require-Anweisungen umzuwandeln. Tatsächlich wird keiner von ihnen in Ihrem kompilierten JavaScript-Code landen.

+0

Danke, aber das scheint nicht der Fall zu sein, da ich eine Abhängigkeit für das 'globals' Modul hinzugefügt habe. – Rafid

0

die Funktionsdefinition in einer separaten Datei Export mit export Stichwort:

export function getHtmlBasePath(): String { 
    // your code 
} 

die Funktion in jeder anderen Typoskript-Datei zu verwenden, importieren Sie einfach die Funktion, das import Schlüsselwort.

import {getHtmlBasePath} from 'filename'; 

filename ist der Name der Datei, in der die Funktionsdefinition geschrieben wird. Nach dem Import der Funktion können Sie die Funktion wie jede andere normale Funktion verwenden.

+0

Das habe ich tatsächlich gemacht, aber der TypeScript-Compiler hat die Funktionsdeklaration als Funktion behandelt und den Modulnamen an den Namen der Funktion angehängt, obwohl das eigentlich nur eine Möglichkeit für den TypeScript-Compiler ist, diese Funktion zu erkennen ist global definiert. – Rafid

Verwandte Themen