Re-export 声明文件中从外部模块到全局的命名空间
Re-export namespace from external module to global in declaration file
我 运行 在导出时遇到了一些问题,就像标题中所说的那样,将名称空间从外部模块导出到声明文件中的全局名称空间。这里我将 post 这段代码来更好地解释我的问题。
//SomeClass.d.ts - 由于不恰当的原因,我必须这样声明 类
interface SomeClassConstructor {
new(): SomeClass;
prototype: SomeClass;
/* static method and variables of SomeClass*/
}
interface SomeClass {
/* method and variables of SomeClass */
}
declare const SomeClass: SomeClassConstructor;
export = SomeClass;
//externalModule.d.ts
import SomeClass_ = require("./SomeClass");
interface Module {
/* declarations */
SomeClass: typeof SomeClass_;
}
declare namespace Module {
/* other declarations */
export type SomeClass = SomeClass_;
}
export = Module;
//module.d.ts
import module = require("./externalModule");
declare global {
interface Window {
Module: module;
}
// What insert here to access Module as a namespace
}
// var someObject: /* like this here: --> */ Module.SomeClass = new window.Module.SomeClass();
//this below of course works, but I need to acces Module globally
var someOtherObject: module.SomeClass = new module.SomeClass();
编辑:也许这可以帮助某人回答这个问题。
我发现这样做:
__//script.ts__
/// <reference path="module.d.ts"/>
const Module = window.Module;
var SomeClass = new window.Module.SomeClass();
通过类型推断,我得到了 SomeClass 作为类型:Module.SomeClass,我可以访问类型:
var someObject: typeof SomeClass;
但是我必须用 var SomeClass;
替换 var SomeClass = new window.Module.SomeClass()
(这给出了 any 的类型)以避免不需要的 Module.SomeClass 初始化。
这是一个糟糕的解决方法,我最好避免。
执行以下操作无效,因为 const
和名称空间不同:
// module.d.ts
declare global {
interface Window {
Module: module;
}
const Module: typeof module;
type Module = typeof module;
}
但是以下应该有效:
//module.d.ts
import module = require("./externalModule");
export = module
export as namespace Module
declare global {
interface Window {
Module: typeof module;
}
}
请注意,如果您可以修改 externalModule.d.ts,则只需在此处添加 export as namespace Module
声明即可。
我 运行 在导出时遇到了一些问题,就像标题中所说的那样,将名称空间从外部模块导出到声明文件中的全局名称空间。这里我将 post 这段代码来更好地解释我的问题。
//SomeClass.d.ts - 由于不恰当的原因,我必须这样声明 类
interface SomeClassConstructor {
new(): SomeClass;
prototype: SomeClass;
/* static method and variables of SomeClass*/
}
interface SomeClass {
/* method and variables of SomeClass */
}
declare const SomeClass: SomeClassConstructor;
export = SomeClass;
//externalModule.d.ts
import SomeClass_ = require("./SomeClass");
interface Module {
/* declarations */
SomeClass: typeof SomeClass_;
}
declare namespace Module {
/* other declarations */
export type SomeClass = SomeClass_;
}
export = Module;
//module.d.ts
import module = require("./externalModule");
declare global {
interface Window {
Module: module;
}
// What insert here to access Module as a namespace
}
// var someObject: /* like this here: --> */ Module.SomeClass = new window.Module.SomeClass();
//this below of course works, but I need to acces Module globally
var someOtherObject: module.SomeClass = new module.SomeClass();
编辑:也许这可以帮助某人回答这个问题。
我发现这样做:
__//script.ts__
/// <reference path="module.d.ts"/>
const Module = window.Module;
var SomeClass = new window.Module.SomeClass();
通过类型推断,我得到了 SomeClass 作为类型:Module.SomeClass,我可以访问类型:
var someObject: typeof SomeClass;
但是我必须用 var SomeClass;
替换 var SomeClass = new window.Module.SomeClass()
(这给出了 any 的类型)以避免不需要的 Module.SomeClass 初始化。
这是一个糟糕的解决方法,我最好避免。
执行以下操作无效,因为 const
和名称空间不同:
// module.d.ts
declare global {
interface Window {
Module: module;
}
const Module: typeof module;
type Module = typeof module;
}
但是以下应该有效:
//module.d.ts
import module = require("./externalModule");
export = module
export as namespace Module
declare global {
interface Window {
Module: typeof module;
}
}
请注意,如果您可以修改 externalModule.d.ts,则只需在此处添加 export as namespace Module
声明即可。