【问题标题】:type inference causes code to fail类型推断导致代码失败
【发布时间】:2012-12-23 20:55:55
【问题描述】:

考虑以下代码:

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,则会发生相同的错误。所以我卡住了,因为我看不到改变不透明度的方法。现在这是我试图进入 Typescript 的 javascript。

【问题讨论】:

    标签: types typescript type-inference


    【解决方案1】:

    如果您知道被克隆的元素是您示例中的 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'; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多