在尝试向折线图添加渐变时,我需要将其作为画布。在继续画布之前,我添加了一个类型检查,但是 Vetur 说“对象可能是 'null'.Vetur(2531)”
mounted() {
const canv = document.getElementById("line-chart") as HTMLCanvasElement;
if (canv !== null && canv !== undefined) {
const gradient = canv
.getContext("2d")
.createLinearGradient(0, 0, 0, canv.height);
经过研究,我尝试使用可选的链接运算符进行类型检查。这种方法有效,因为没有报告错误。
mounted() {
const canv = document.getElementById("line-chart") as HTMLCanvasElement;
const gradient = canv
?.getContext("2d")
?.createLinearGradient(0, 0, 0, canv.height);
我对为什么第一种方法不起作用感到困惑,因为 canv 是一个常量,因此不能改变。类型检查应该足够了。
为什么在这种情况下只有可选链接起作用?