Я пытаюсь реализовать history
API-патч, как это делает библиотека маршрутизации wouter
, но в Typescript вместо Javascript.
Библиотека wouter
использует такой код:
["pushState", "replaceState"].map(type => {
const original = history[type];
history[type] = function() {
const result = original.apply(this, arguments);
const event = new Event(type);
event.arguments = arguments;
dispatchEvent(event);
return result;
};
});
который я адаптировал в Typescript:
type WindowHistoryFn =
(data: any, title: string, url?: (string | null)) => void;
function patchHistoryPushState(){
const original: WindowHistoryFn = window.history.pushState;
window.history.pushState = function(data: any, title: string, url?: (string | null)): void{
const result = original.apply(this, [data, title, url]);
const event = new Event("pushState");
// @ts-ignore
event.arguments = arguments;
dispatchEvent(event);
return result;
};
}
Кажется, это работает, но я не понимаю строку event.arguments = arguments
.
Тип Event
не имеет поля arguments
. Есть ли другой тип Event
, которым я должен заниматься? Как я могу переписать вышеуказанную функцию Typescript, чтобы не использовать ts-ignore
?