Establecer window.location con TypeScript

82

Recibo un error con el siguiente código 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');
        });

 }

Recibo un error rojo subrayado por lo siguiente:

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

El mensaje dice:

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

Alguien sabe que significa esto?

huysentruitw
fuente

Respuestas:

157

window.locationes de tipo Locationmientras .attr('data-href')devuelve una cadena, por lo que debe asignarla a window.location.hrefcuál es de tipo cadena también. Para eso reemplace su siguiente línea:

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

Para este:

window.location.href = $link.attr('data-href');
Nelson
fuente
1
Observo que en los navegadores de hoy, la configuración window.location = "some string"tiene un comportamiento especial, consulte aquí: stackoverflow.com/questions/2383401/… - vea los comentarios sobre el comportamiento del mismo sitio, del mismo origen y XHR.
Dai
23

te has perdido el href:

Estándar, para usar técnicamente window.location.hrefcomo window.locationes un objeto que contiene:

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

tratar

 window.location.href = $link.attr('data-href');
NullPoiиteя
fuente