typescript - Importar interfaz desde un módulo con declaración export =
Muchos archivos de definición de tipos hacen uso de la directiva export =, como:
declare module "i40" {
interface RouterStatic {
() : Router;
}
interface RouteInfo {
params : {
[key : string] : any;
};
splats : string[];
route : string;
fn : Function;
next : any;
}
interface Router {
addRoute(routeString : string, action ?: Function);
match(test : string) :RouteInfo;
}
export = null as RouterStatic;
}
Alternativamente, alguien podría haber escrito código así:
export interface Blah {}
const x = {hi : 5};
export = x;
EDITAR: Este código solía funcionar una vez, pero en la versión actual (2.6), no se compilará. El compilador dice que no puedo usar export = si exporto otras cosas desde el módulo. Lo cual tiene sentido.
¿Cómo importo una de las interfaces en el módulo? Ninguna de las siguientes funciona.
import Router = require('i40');
let x : Router.RouteInfo; //RouteInfo not found
import {RouteInfo} from 'i40'; //RouteInfo not found
import * as Router2 from 'i40'; //Error, i40 is not a module
Respuesta #1
Yo diría (módulos de referencia bajo Ambient Modules)
declare module "i40" {
interface RouterStatic {
...
}
interface RouteInfo {
...
}
interface Router {
...
}
export { RouterStatic, RouteInfo, Router } as RouterStatic;
}
import * as Router2 from 'i40';
// use as Router2.RouterStatic, etc
// or
import { RouterStatic, RouteInfo, Router } from 'i40';
// use as RouterStatic, etc
