javascript - Setează window.location cu TypeScript
Primesc o eroare cu următorul cod TypeScript:
///<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');
});
}
Primesc o eroare subliniată cu roșu pentru următoarele:
$link.attr('data-href');
Mesajul spune:
Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'
Cineva știe ce înseamnă asta?
Răspuns #1
window.location este de tip Location, în timp ce .attr('data-href') returnează un șir de caractere, așadar trebuie să îl atribuiți lui window.location.href care este de asemenea de tip șir de caractere. Pentru asta, înlocuiți următoarea linie:
window.location = $link.attr('data-href');
pentru acesta:
window.location.href = $link.attr('data-href');
Răspunsul #2
ai ratat href:
Standard, Pentru a folosi window.location.href deoarece window.location este tehnic un obiect care conține:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
încearcă
window.location.href = $link.attr('data-href');
Răspunsul #3
Există o metodă assign pe interfața Location care funcționează perfect cu TypeScript atunci când i se transmite un șir și funcționează la fel ca window.location=LOCATION.
window.location.assign('http://example.com');
interface Location {
...
/** Navigates to the given URL. */
assign(url: string | URL): void;
}
Metoda pare să existe de mult timp (IE 5.5!).
https://developer.mozilla.org/ro/docs/Web/API/Location/assign
