我正在使用以下链接中的history.js声明文件。
但是,“History”对象与lib.d.ts中的本机History对象冲突。有没有办法克服这个问题?我三重检查,我包括对history.js声明文件的引用。
答案 0 :(得分:3)
我已经向Definitely Typed项目发送了一个pull请求,将定义文件更改为:
interface HistoryAdapter {
bind(element, event, callback);
trigger(element, event);
onDomLoad(callback);
}
interface History {
enabled: bool;
pushState(data, title, url);
replaceState(data, title, url);
getState();
getHash();
Adapter: HistoryAdapter;
back();
forward();
go(X);
log(...messages: any[]);
debug(...messages: any[]);
}
这可以优雅地将其他属性和方法添加到现有接口,依此类推到现有的History类定义,因此使用:
var history = new History();
现在应该可行。只需grab the latest History definition from Definitely Typed。
Github链接已经改变(再次)。文件现在位于:https://github.com/borisyankov/DefinitelyTyped/tree/master/history
答案 1 :(得分:1)
当然,只需将您的对象转换为DefinitelyTyped提供的HistoryStatic
接口。
var h = new History();
h = <HistoryStatic>h;
h.getState();
如果声明文件扩展了History
已提供的lib.d.ts
接口而不是创建自己的接口,那会更好。也许这是有意图或者可能被忽视了。