LSP-Typescript, une fois activé, raconte un peu portnawak, je trouve, pas vous ?
/*global dotclear */
'use strict';
dotclear.ready(() => {
// DOM ready and content loaded
// Give focus to user field
const uid = document.querySelector('input[name=user_id]');
if (uid) uid.focus();
const ckh = document.getElementById('cookie_help');
if (ckh) ckh.style.display = navigator.cookieEnabled ? 'none' : '';
const upw = document.querySelector('input[name=user_pwd]');
if (!upw) {
return;
}
// Add an event listener to capture CR key press in user field to give to password field if it is empty
uid.addEventListener('keypress', (event) => {
if (event.which == 13 && upw.value == '') {
// Password is empty, give focus to it
upw.focus();
// Stop handling of this event (CR keypress)
event.preventDefault();
}
});
});
Ligne 9, il m’annonce que la méthode focus()
n’est pas connue pour le type Element (HTML) retourné par la méthode document.querySelector()
, oui oui.
Et puis aussi que la propriété which
n’est pas non plus connue pour le type Event fourni en paramètre de la fonction de rappel de la méthode addEventListener()
, ben voyons. Par contre il me dit pas que cette propriété est deprecated !?!
Je sais pas ce qu’ils ont fumé, mais c’est de la bonne !
Ou alors c’est moi qui me plante et j’aimerais très beaucoup qu’on m’explique pourquoi !
Alors effectivement c’est moi qui me plante vu que LSP-Typescript infère les types des variables parfois pas tout à fait de la façon que je souhaite. Il faut donc que je documente les types de variable (JSDoc) et que je corrige mon code le cas échéant.
PS : Je sais qu’il y a des trucs à compléter dans le code ci-dessus, c’est pas encore ceinture/bretelles, mais la question n’est pas là.
1 De Biou -
Est-ce que ça pourrait être parce que tu utilises un validateur Typescript pour valider du JavaScript dans lequel tu n’as aucune info sur les types ? Je ne connais pas du tout Typescript, je ne peux pas aider. Perso (même si ça ne fait pas exactement la même chose que ton LCP) j’utilise eslint sur mes projets et j’en suis content.
2 De Franck -
Oui c’est tout à fait ça et Boris Chapira m’indique aussi que ça peut venir de ça. Je vais reprendre (JSDocumenter) mon code pour voir.
Et puis lire un peu de doc encore, pour voir comment gérer la distinction Element/HTMLElement.