Typescript 如何创建简单类的环境声明
我有一个简单的外部项目(),我想创建一个环境声明(这显然是错误的): 我的问题是如何更改声明,以便像这样使用撤销管理器Typescript 如何创建简单类的环境声明,typescript,Typescript,我有一个简单的外部项目(),我想创建一个环境声明(这显然是错误的): 我的问题是如何更改声明,以便像这样使用撤销管理器 var UndoManager = require('undo-manager'); // some more imports may be needed to get Command, but how? undoManager = new UndoManager(); function addCmd(cmd: Command) { undoManager.add(
var UndoManager = require('undo-manager');
// some more imports may be needed to get Command, but how?
undoManager = new UndoManager();
function addCmd(cmd: Command) {
undoManager.add(cmd);
}
addCmd({
redo: () => doSomething(),
undo: () => undoSomething()
});
定义文件应该是
declare module "undo-manager" {
module UndoManager {
export interface Command {
redo(): any;
undo(): any;
}
}
class UndoManager {
setCallback(f: Function): void;
undo(): void;
redo(): void;
hasUndo(): boolean;
hasRedo(): boolean;
add(cmd: UndoManager.Command): void;
}
export = UndoManager
}
这样用吧
import * as UndoManager from 'undo-manager'
const um = new UndoManager()
function addCmd(cmd: UndoManager.Command) {
um.add(cmd)
}
两点意见:
1-与定义文件中列出的方法相比,UndoManager
中提供的公共方法似乎更多
2-既然我们已经做到了,那么最好您将这个定义文件贡献给(或者,更好的是,让代码作者维护它)不幸的是,这不起作用。因为javascript模块
UndoManager
只导出类UndoManager
:在javascript中,您说var UndoManager=require('undo-manager');var undoManager=新的undoManager()代码>。在Typescript模块中,我可以说export=UndoManager
,但是,见鬼,如何也导出命令
界面???好的。完全修改了上面的答案(并测试了它:))太好了,现在它可以正常工作了。诀窍似乎是添加与导出类同名的子模块。我想这也适用于类构造函数的属性。是的。模块
/名称空间
“技巧”实际上非常常见于“扩充”现有定义。可以在类中声明构造函数签名。
import * as UndoManager from 'undo-manager'
const um = new UndoManager()
function addCmd(cmd: UndoManager.Command) {
um.add(cmd)
}