jsdoc 类 如何使用静态属性

how jsdoc Classes with static properties

我怎样才能在这里获得有效的设置?

我希望能够用静态 类 _Test.list 记录 id 属性 但我无法在 vscode 中找到正确的智能感知方式。 所以所有数字都不是来自 _Test.list 字典,应该给我错误。

任何人都可以帮助我使用 jsdoc plz 正确格式化它。 抱歉,如果是菜鸟问题,我从 jsdoc 开始。

class _Test {
    static list = { a:1,b:2,c:3 };
    constructor() {
        /**
        * @typedef {Object} DATA
        * @property {_Test.list} DATA.id - id from list _Test.list
        * @property {_Test.list} DATA.id2 - id from list _Test.list
        * 
        */
        /**@type {DATA} */
        this.list = {
            id: _Test.list.a, // should ok
            id2: 14, // should show a error
        }
    }
};

我想这样进行是因为我需要在 vscode 中保留引用功能。

JSDoc 不像 Typescript 那样有 as const 的概念,至少在 VS Code 的打字稿中是这样。但是你可以显式地给出一个文字类型:

/** @type {{ a: 1, b: 2, c: 3 }} */
static list = { a: 1, b: 2, c: 3 }

但首先定义允许的值并在索引签名中使用它们会更简单:

/** @typedef {1 | 2 | 3} Values */
/** @typedef {{ [s: string]: Values }} DATA */

/** @type {DATA} */
static list = { a: 1, b: 2, c: 3 }

那么你也可以在其他地方使用DATA

class _Test {
    /** @type {DATA} */
    static list = { a:1,b:2,c:3 };
    constructor() {
        /** @type {DATA} */
        this.list = {
            id: _Test.list.a, // should ok
            id2: 14, // should show a error
        }
    }
};

只想更新 现在智能感知支持 jsdoc 与 ts 混合 所以我们可以使用 @type {keyof staticList}