类型推断导致代码失败

时间:2013-01-09 16:15:21

标签: types typescript type-inference

考虑以下代码:

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返回Node而不是HTMLElement,如果你尝试从Node手动转换为HTMLElement,那么就会发生同样的错误。所以我卡住了,因为我没有看到改变不透明度的方法。现在这是javascript我试图进入Typescript。

1 个答案:

答案 0 :(得分:3)

如果您知道正在克隆的元素是示例中的HTMLElement,则可以将其强制转换:

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';