2015-07-06 34 views
5

Ho il seguente codice: test.htmlLa proprietà 'querySelector' non esiste sul tipo 'Nodo'. a macchina

<!DOCTYPE html> 
<html> 
<head lang="zh-CN"> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 
    <title></title> 
</head> 
<body> 
    <div id="container"> 
     <div id="box"></div> 
    </div> 
    <script src="test.js"></script> 
</body> 
</html> 

ei test.ts di file ts

var box = document.querySelector('#box'); 
console.log(box.parentNode.querySelector('#box')); 

e ho ottenuto l'errore.

Error:(2, 28) TS2339: Property 'querySelector' does not exist on type 'Node'. 

ho trovato la seguente frase in MDN

parentNode è il genitore del nodo corrente. Il genitore di un elemento è un nodo Elemento, un nodo Documento o un nodo DocumentFragment.

qui è la mia prova

var ul = document.querySelector('ul') 
undefined 
ul.parentNode.toString() 
[object HTMLDivElement]" 

qualcuno potrebbe dirmi cosa c'è di sbagliato in questo?

la versione del dattiloscritto è 1,4

risposta

9

Qualcuno potrebbe dirmi cosa c'è di sbagliato in questo

vista del dattiloscritto delle API. Al momento non c'è modo di dire che il tipo di foo.parentNode dipende dal tipo di foo. Attualmente si deduce essere sempre di tipo Node e Node non contiene l'API querySelector (a Element)

Fix

Utilizzare un tipo asserzione come mostrato:

var box = document.querySelector('#box'); 
console.log((<Element>box.parentNode).querySelector('#box')); 
1

uso

let box = <Element>document.querySelector('#box'); 
Problemi correlati