打字稿历史js冲突

时间:2013-01-04 01:40:03

标签: typescript

我正在使用以下链接中的history.js声明文件。

History.js declaration file

但是,“History”对象与lib.d.ts中的本机History对象冲突。有没有办法克服这个问题?我三重检查,我包括对history.js声明文件的引用。

2 个答案:

答案 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接口而不是创建自己的接口,那会更好。也许这是有意图或者可能被忽视了。