在流中优化HTML元素类型

时间:2018-03-19 17:28:45

标签: javascript types flowtype

是否可以将NodeElement细化为特定的HTML元素类型?例如:

function htmlToEntity: (node: HTMLAnchorElement | Node) {
    if (node.tagName === "A") {
      return createEntity(
        "LINK",
        "MUTABLE",
        { url: node.href }, // Throws error
      );
    }
    return undefined;
}

它抛出的错误是:

  

无法获取node.href,因为href

中缺少属性Node

1 个答案:

答案 0 :(得分:0)

您应该可以使用instanceof来优化它。

function htmlToEntity(node: HTMLAnchorElement | Node) {
  if (node instanceof HTMLAnchorElement) {
    return createEntity(
      'LINK',
      'MUTABLE',
      { url: node.href } // Does not throw error
    )
  }
  return undefined
}