2013-01-09 68 views
0

考慮下面的代碼:當然類型推斷會導致代碼失敗

var yum: HTMLElement; 
    var bin: Element; 
yum = document.createElement('p'); 
var y: Node = yum.cloneNode(true); 
bin.appendChild(y); 

y.style.display = 'none';  //fails Error 2 Cannot convert 'Node' to 'HTMLElement': Type 'Node' is missing property 'click' from type 'HTMLElement' 

失敗作爲cloneName返回節點,而不是HTML元素,如果你什麼嘗試從節點手動轉換爲HTML元素再發生同樣的錯誤。所以我卡住了,因爲我沒有看到改變不透明度的方法。現在,這是JavaScript我正試圖進入Typescript。

回答

3

如果你知道被克隆的元素是一個HTML元素在你的榜樣,你可以將它轉換:

var yum: HTMLElement; 
var bin: Element; 

yum = document.createElement('p'); 
var y: HTMLElement = <HTMLElement> yum.cloneNode(true); 
bin.appendChild(y); 

y.style.display = 'none'; 

凡類型是明確的,你可以選擇不標註的類型,就像這樣:

var bin: Element; 
var yum = document.createElement('p'); // type inferred as createElement returns an HTMLElement 
var y = <HTMLElement> yum.cloneNode(true); // type inferred from the cast 

bin.appendChild(y); 
y.style.display = 'none';