我正在使用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的控制标志来编写代码?
答案 0 :(得分:0)
我在评论中链接的Github问题的更新:
今天,没有"好"解决它的方法,但你可以使用显式类型检查来关闭编译器:
if (img instanceof HTMLImageElement) {
img.src = "image.png";
}
您可能知道检查可能会失败,但它会使检查员满意。将来,检查器将支持评论指令:
const el = /* @type {HTMLImageElement} */ (document.querySelector("#definitelyAnImage"));
这是今天的夜间版本,所以我希望在7月或8月的版本中看到它,但这不是正式的。