Typescript: Erweiterung eines externen Moduls

Erstellt am 28. Nov. 2014  ·  3Kommentare  ·  Quelle: microsoft/TypeScript

Ich versuche, ein externes Knotenmodul zu erweitern:

// a) Use an import?
import System.Fs.Node = require('fs');

// b) Hackery? 
var System = System || {}
var System.Fs = System.Fs || {}
var System.Fs.Node = require('fs')

module System.Fs.Node {

    var path = require('path');

    interface IfOptions_mkdir {
        mode?: number
        recursive: boolean
    }

    export function mkdirSync($path: string, $options: IfOptions_mkdir|number) {
        try {
...

Irgendwelche Gedanken, wie ich ein externes Modul erweitern könnte/sollte?

Question

Alle 3 Kommentare

Ich denke, das könnte funktionieren, gewinnt Punkte für die Lesbarkeit:

module System.Fs.Node {
    export * from "fs";

    export function mkdirSync($path: string, $options: IfOptions_mkdir|number) {
     //...
    }
  }

Sie können dies heute tun:

In einer separaten .d.ts-Datei:

declare module "fs" {
  stuff: number;
}

In deinem Monkeypatcher:

/// reference the above .d.ts file
import fs = require('fs');
fs.stuff = 3;

Ich glaube nicht, dass wir dafür zusätzliche Syntax hinzufügen werden, da dies (hoffentlich?) kein übliches Szenario ist.

FWIW funktioniert dies nicht mehr bei Verwendung von Knotenauflösung und "richtigen externen Modulen". Das Umgebungsmodul überschreibt einfach jedes knotenaufgelöste Modul.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen