有一种方法可以为HTML5帆布元素获得Intellisense吗?在vs代码0.7.10中,当我在JS代码中编写此:
context = document.getElementById(canvasId).getContext('2d');
然后我写
context.
我对我的上下文没有任何智力帮助。 thanks。
VS代码可以支持它!
context
solution
solution
我使用“类型铸造”:然后享受基本的Intellisense:
目前不受VS代码的支持,很难修复。由于JavaScript缺乏类型注释,因此VS代码试图尽可能好。在您的示例中,var canvas = /** @type {HTMLCanvasElement} */ (document.querySelector('#canvas'))
破坏了此流程,因为从规格中可以返回任何HTML元素(而且我们对HTML结构或值的值不再了解
document.getElementById
canvasId
端,您可以考虑使用Typescript,因为您使用类型的注释和类型铸造。
您必须重新解析@Type变量,并分配CTX以使Intellisense在另一个函数中作为参数将CTX作为参数再次工作。这对我有用:
var canvas = document.createElement('canvas');
canvas.|
问题是VS代码无法检测到您的元素是否实际上是
const drawGame=(ctx)=>{
/** @type {CanvasRenderingContext2D} */
var dgCtx = ctx
dgCtx.fillStyle = "#79d70e"
dgCtx.fillRect(0,0,gs.width, gs.height)
}
useEffect(()=>{
const canvas = canvasRef.current
/** @type {CanvasRenderingContext2D} */
const ctx = canvas.getContext("2d")
drawGame(ctx)
},[])
document.getElementById()
告诉VS代码)告诉代码,您的返回元素实际上是一个。
一个问题是,<canvas>
函数只会返回第一个因此,我们必须使用
<canvas>
来获取页面中的所有元素,然后我们将根据document.querySelector("canvas")
选择特定的<canvas>
并在上面进行一些过滤。
这种方法可以有效地使用VS代码:
document.querySelector("canvas#id")
然后您可以编写任何HTML5画布,
在此效果