2017-06-10 3 views
2

Ich bin neu in Typescript und ich habe eine Weile nach verschiedenen Methoden gesucht, um dies zu tun, aber ich bin fest.Exportieren einer Sammlung von Funktionen in Typescript

Ich möchte eine Bibliotheksdatei erstellen, die nur eine Sammlung von nicht verwandten Funktionen enthält, die ich überall importieren kann. In regelmäßiger Javascript kann ich nur etwas ähnlich wie diese:

let libraryFunctions = {}; 
libraryFunctions.a =() => { 
    return true; 
} 
module.exports = libraryFunctions; 

jedoch in Typoskript bekomme ich nur eine Beschwerde sagen Property 'a' does not exist on type {}. Ich sah dann, ich könnte so etwas wie folgt aus:

interface ILibraryFunctions { 
    a(): boolean; 
}; 

export class LibraryFunctions implements ILibraryFunctions { 
    a =() => { 
    return false; 
    } 
} 

Allerdings scheint Erstellen einer Klasse zu groß zu sein (es sei denn, wenn mein Verständnis von Typoskript Klasse ist falsch). Kann mir jemand in die richtige Richtung zeigen?

Danke!

Antwort

3

In Typoskript, die Sie gerade export, was Sie wollen, ähnlich wie bei ES2015-Module (die auch von babel umgesetzt werden):

export function a() { 
    return true; 
} 

// or alternatively 

export const b =() => false 

Dann in einer anderen Datei

import {a, b} from './thatFirstFile'; 
// or 
import * as libraryFunctions from './thatFirstFile'; 

Wie Für Ihr spezifisches Szenario müssen Sie keine Klasse implementieren:

interface ILibraryFunctions { 
    a(): boolean; 
}; 

const myLib: ILibraryFunctions = { 
    a() { return true; } 
}; 

export default myLib; 

Das heißt, das Verfahren an der Spitze der Antwort erwähnt ist vorzuziehen, von Daniel's comment below:

Realistisch betrachtet, würden Sie nicht export default ein Objekt mit a, dann würden Sie direkt Default-Export a selbst. Das heißt, ein Grund, warum Sie nicht tun würden, was geschrieben wurde, ist, dass existierende Werkzeuge leichter von den Top-Level-Exporten schälen können, aber nicht von einem tatsächlichen Objekt. Darüber hinaus können Sie mit der ersten Syntax die ES2015-Import-Syntax verwenden, wenn Sie mehr als einen Export ausführen.

+0

Vielen Dank für Ihre Hilfe! Was ist der Grund dafür, warum die erste Methode vorzuziehen ist? – user3781239

+2

Realistischerweise würden Sie ein Objekt mit 'a' nicht" exportieren ", Sie würden direkt' a' selbst default-exportieren. Das heißt, ein Grund, warum Sie nicht tun würden, was geschrieben wurde, ist, dass existierende Werkzeuge leichter von den Top-Level-Exporten schälen können, aber nicht von einem tatsächlichen Objekt. Darüber hinaus können Sie mit der ersten Syntax die ES2015-Import-Syntax verwenden, wenn Sie mehr als einen Export ausführen. –

+0

@DanielRosenwasser Danke, das ist ein ausgezeichneter Punkt. Ich habe es zur besseren Sichtbarkeit hinzugefügt. –

Verwandte Themen