Встановіть window.location за допомогою TypeScript


85

Я отримую повідомлення про помилку з таким кодом 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');
        });

 }

Я отримую підкреслену червону помилку за наступне:

$link.attr('data-href'); 

У повідомленні сказано:

Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'

Хтось знає, що це означає?

Відповіді:


164

window.locationмає тип, Locationа .attr('data-href')повертає рядок, тому вам доведеться призначити його тому, window.location.hrefякий також має тип рядка. Для цього замініть наступний рядок:

window.location = $link.attr('data-href');

для цього:

window.location.href = $link.attr('data-href');

1
Зауважу, що в браузерах сьогодні налаштування window.location = "some string"мають особливу поведінку, див. Тут: stackoverflow.com/questions/2383401/… - див. Коментарі щодо поведінки того самого сайту, того самого походження та XHR.
Dai,

27

ви пропустили href:

Стандарт, використовувати window.location.hrefяк window.locationтехнічно об’єкт, що містить:

Properties
hash 
host 
hostname
href    <--- you need this
pathname (relative to the host)
port 
protocol 
search 

спробуй

 window.location.href = $link.attr('data-href');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.