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

Relaterte artikler