我刚下载了一个名为History.js
的javascript库它是javascript中历史对象的包装器,用于执行正确的跨平台功能。
您可以在正常的Javascript环境中使用它,例如像这样:History.pushState(data,title,url);
但是我想在Typescript环境中使用它,这意味着我必须在d.ts文件中声明函数/变量,但是历史变量已经在默认的lib.d.ts中声明。
我可以在这里看到它(第10475行,第10485行和第16363行):
interface History {
length: number;
state: any;
back(distance?: any): void;
forward(distance?: any): void;
go(delta?: any): void;
pushState(statedata: any, title?: string, url?: string): void;
replaceState(statedata: any, title?: string, url?: string): void;
}
declare var History: {
prototype: History;
new (): History;
}
declare var history: History;
所以现在我的问题是如何使用History.js库?我需要做些什么才能写出" History.pushState(data,title,url);"在打字稿?
我相信我必须编辑"声明var历史:{...}"对此(如果我错了,纠正我):
declare var History: {
prototype: History;
new (): History;
pushState(data: any, title: string, url: string): void;
}
之后,我现在可以写History.pushState(...);在我的Typescript代码中。
但我无法保存lib.d.ts文件,因为它受到保护。即使我可以保存它也不是那么好,因为那时我可以使用其他可能没有History.js的项目中的函数,这会产生错误(我相信lib.d.ts在所有项目)。
那么我怎么能实现这个目标呢?
答案 0 :(得分:0)
好吧,我刚刚发现其他人创建了一个绝对类型的库,他们遇到了同样的问题,并采取了另一种解决方法。
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/history/history-tests.ts