2016-08-28 1 views
2

(. Ce utilise tapuscrit 2.0.0 (npm install -g [email protected]) avec --strictNullChecks)Certains types DOM sont-ils "faux" avec TypeScript 2.0 et strictNullChecks?

Selon lib.dom.d.ts, la signature de type de document.querySelector est la suivante:

querySelector(selectors: string): Element; 

Mais il est trivial pour obtenir cette fonction pour retourner null:

document.querySelector('asdf'); // returns null (in typical cases) 

Avant 2.0 null vérification stricte cela semble raisonnable puisque vous deviez prendre toutes les valeurs peuvent être nULL. Mais avec la vérification nulle stricte activée, vous êtes endormi dans un faux sentiment de sécurité.

Si le type de querySelector était

querySelector(selectors: string): Element | null; 

alors les choses seraient plus en sécurité. Est-ce que ces types sont susceptibles d'être mis à jour, ou est-ce que je manque quelque chose sur comment cela est censé fonctionner?

+0

Oui, c'est faux. Ils l'ont oublié ou l'ont laissé inchangé comme une sorte de compromis auquel je ne peux penser. – AlexG

+0

Je ne pense pas que ce soit le meilleur endroit pour poser cette question. Un problème sur la page github de typecript serait beaucoup mieux. :) – toskv

+0

@toskv En pensant que vous aviez probablement raison, je suis allé soumettre un problème de github. Mais ils demandent explicitement aux gens de venir ici pour des questions, vous pouvez voir dans le modèle ici https://github.com/Microsoft/TypeScript/issues/new – overthink

Répondre