如何说服Typescript检查器值是Javascript中的特定子类?

时间:2017-07-27 14:30:01

标签: javascript visual-studio-code

我正在使用VS Code并启用了(相对)新的checkJS选项 - 我正在编写Javascript,但这会让Typescript引擎进行有限的类型检查。

我正在使用querySelector查找DOM元素并访问特定于元素的属性:

var img = document.querySelctor("#myImage");
img.src = "image.png";

这会导致Code将第二行标记为问题,因为querySelector仅返回Element.src属性是HTMLImageElement的成员。在实际的Typescript中,我在访问属性之前强制转换(强制?断言?)返回值,但由于这是vanilla Javascript,因此它不是一个选项。有没有其他方法可以避免在评论中使用特定于TS的控制标志来编写代码?

1 个答案:

答案 0 :(得分:0)

我在评论中链接的Github问题的更新:

今天,没有"好"解决它的方法,但你可以使用显式类型检查来关闭编译器:

if (img instanceof HTMLImageElement) {
  img.src = "image.png";
}

您可能知道检查可能会失败,但它会使检查员满意。将来,检查器将支持评论指令:

const el = /* @type {HTMLImageElement} */ (document.querySelector("#definitelyAnImage"));

这是今天的夜间版本,所以我希望在7月或8月的版本中看到它,但这不是正式的。