首页 > 解决方案 > 如何让 VS Code 智能感知识别附加到现有类的新方法

问题描述

我正在尝试在 CanvasRenderingContext2D 类(它是画布元素的上下文对象)上定义新方法。例如,

CanvasRenderingContext2D.prototype.dot=function(x, y) {
    ....
}

将是一种在 (x, y) 坐标处绘制具有特定样式的点的新方法(函数内的确切代码与我的问题无关)。我的问题是,如何让 VS 代码智能感知这现在是 CanvasRenderingContext2D 的新方法?我试过像

/**
 * Draws a dot at the (x, y) coordinate
 * @memberof CanvasRenderingContext2D#
 * @param {number} x 
 * @param {number} y 
 */

但它不起作用,当我写下 CanvasRenderingContext2D 的实例时,智能感知中仍然只显示原始成员。我如何使它工作?谢谢!

标签: javascriptvisual-studio-codejavascript-intellisense

解决方案


您需要像这样使用自定义@typedef:

/**
 * Draws a dot at the (x, y) coordinate
 * @param {number} x 
 * @param {number} y 
 */
const dot=function(x, y) {
}
CanvasRenderingContext2D.prototype.dot = dot;

/** @typedef {CanvasRenderingContext2D & { dot: dot }} MyCanvasRenderingContext2D */

/** @type {MyCanvasRenderingContext2D} */
const o = new CanvasRenderingContext2D();
o.dot();

推荐阅读