2017-10-13 3 views
3

Je reçois la valeur d'un élément DOM avec Tapuscrit cette façon:Comment éviter de lancer un élément DOM vers n'importe quel type dans Typescript?

(<any>document.getElementById('MyElementId')).value 

Il ne semble pas juste de le jeter à any. Existe-t-il un moyen d'utiliser des types pour obtenir cet attribut?

+0

Avez-vous essayé ce code sans spécifier de type? Est-ce que ça marche? –

+0

Il me donne une erreur de compilation –

+0

Bonne question. S'il vous plaît évitez la question "droit à X" car ils invitent des réponses opiniâtres. J'ai reformulé votre question car il semble que votre but est de se débarrasser de tout. – k0pernikus

Répondre

2

Connaissez-vous le type spécifique d'élément que vous obtenez? Si tel est le cas, vous pouvez utiliser les types d'éléments intégrés au lieu de la conversion en any. Il existe un type intégré pour tous les types d'éléments DOM de base (div, ancre, span, option, etc.).

Par exemple, si vous obtenez, disons, un élément textarea, vous pouvez le faire:

(<HTMLTextAreaElement>document.getElementById('MyElementId')).value 

La fonction getElementById retourne juste une Element plaine, car il n'y a pas tapuscrit de façon peut savoir quel type d'élément sera retourné (si tout est retourné). Mais puisque tous les types d'éléments plus spécifiques (HTMLOptionElement, HTMLTextAreaElement, etc.) sont tous des sous-types de Element, vous pouvez affiner votre type de retour avec une distribution pour obtenir ce type de sécurité que vous recherchez.

+0

Réponse parfaite, connaissez-vous une ressource en ligne que je pourrais utiliser pour rechercher ce genre de choses moi-même? –