javascript - Sett window.location med TypeScript
Jeg får en feil med følgende TypeScript-kode:
///<reference path='../../../Shared/typescript/jquery.d.ts' />
///<reference path='../../../Shared/typescript/jqueryStatic.d.ts' />
function accessControls(action: Action) {
$('#logoutLink')
.click(function () {
var $link = $(this);
window.location = $link.attr('data-href');
});
}
Jeg får en understreket rød feil for følgende:
$link.attr('data-href');
Meldingen sier:
Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'
Vet noen hva dette betyr?
Svar #1
window.location er av typen Location, mens .attr('data-href') returnerer en streng, så du må tilordne den til window.location.href som også er av strengetype. For det, erstatt følgende linje:
window.location = $link.attr('data-href');
for denne her:
window.location.href = $link.attr('data-href');
Svar #2
du har glemt href:
Standard, å bruke window.location.href som window.location er teknisk sett et objekt som inneholder:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
prøv
window.location.href = $link.attr('data-href');
Svar #3
Det finnes en assign-metode på Location-grensesnittet som fungerer helt fint med TypeScript når den får en streng, og fungerer på samme måte som window.location=LOCATION.
window.location.assign('http://example.com');
interface Location {
...
/** Navigates to the given URL. */
assign(url: string | URL): void;
}
Metoden ser ut til å ha eksistert lenge (IE 5.5!).
https://developer.mozilla.org/en-US/docs/Web/API/Location/assign
