Estoy tratando de extender un módulo de nodo externo:
// 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 {
...
¿Alguna idea sobre cómo podría / debería extender un módulo externo?
Creo que esto podría funcionar, gana puntos por legibilidad:
module System.Fs.Node {
export * from "fs";
export function mkdirSync($path: string, $options: IfOptions_mkdir|number) {
//...
}
}
Puedes hacer esto hoy:
En un archivo .d.ts separado:
declare module "fs" {
stuff: number;
}
En tu parche de mono:
/// reference the above .d.ts file
import fs = require('fs');
fs.stuff = 3;
No creo que vayamos a agregar sintaxis adicional para esto ya que (¿con suerte?) No es un escenario común.
FWIW, esto ya no funciona cuando se usa la resolución de nodo y los "módulos externos adecuados". El módulo ambiental simplemente anula cualquier módulo resuelto por un nodo.