【问题标题】:Using TypeScript in VS Code giving Canvas errors on latest version在 VS Code 中使用 TypeScript 在最新版本上出现 Canvas 错误
【发布时间】:2021-05-14 20:09:05
【问题描述】:

我正在使用 TypeScript 为我的应用编写一些 Canvas 代码并收到以下错误:

Property 'wrapText' does not exist on type 'CanvasRenderingContext2D'.ts(2339)

这是从这条线上来的:

CanvasRenderingContext2D.prototype.wrapText = function(text, x, y, maxWidth, lineHeight) 

我想我可以在 lib.dom.d.ts 文件中添加一个声明,该文件位于 VS Code 的 node_modules 扩展部分中。这是修复它的唯一方法吗?我很好奇为什么不包括在内。我正在运行 2021 年 4 月版的 VS Code,因为我刚刚升级了它。

【问题讨论】:

    标签: typescript dom visual-studio-code canvas


    【解决方案1】:

    我找不到证明上下文中应该有一个现有的 wrapText 定义的参考,即使有这样的成员属性,它也不一定是可写的。

    我认为这种猴子修补模式正在添加一个以前根本不存在的新属性。

    我将此解释为 typescript 的正常多余属性检查行为,这意味着您不能将意外属性分配给预定义类型的实例。

    https://riptutorial.com/html5-canvas/example/18590/wrapping-text-into-paragraphs 表示没有预先存在的实现并采用类似的模式(在 javascript 中,没有多余的属性检查,因此没有错误)。

    在不操作任何 node_modules 或 VSCode 元数据的情况下,您仍然可以安排使用全局增强使此可选属性在项目本地的 CanvasRenderingContext2D 上有效...https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation

    【讨论】:

    • 你是对的。我想通了,这是我的错误,没有引用 .wrapText 因为它是其他人编造的功能。我只需要以不同的方式声明它。谢谢。
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2023-02-02
    • 2023-02-18
    相关资源
    最近更新 更多