javascript 如何在JSDOC中键入类似于TS的keyof instace?

gdrx4gfi  于 2023-02-21  发布在  Java
关注(0)|答案(1)|浏览(258)

如何在Javascript(JSDOC)中类似于Typescript键入keyof示例?
TS刚刚好:

const a1 = new Car('Audi A1', 4, Power.solar);
const a380 = new Plane('Airbus A380', 800, 4);

function showProperty<T>(thing: T, prop: keyof T) {
    console.log(`${String(prop)}:`, thing[prop]);
}

showProperty(a1, 'power');
showProperty(a380, 'engines');

链接到完整TS代码
但我不知道如何使用jsdoc:

const a1 = new Car('Audi A1', 4, 'petrol');
const a380 = new Plane('Airbus A380', 800, 4);

/**
 * @param {Thing} thing
 * @param {keyof Thing} prop
 */
function showProperty(thing, prop) {
    console.log(`${String(prop)}:`, thing[prop]);
}

showProperty(a1, 'capacity'); // I want to see the "power" property here...!
showProperty(a380, 'capacity'); // I want to see the "engines" property here...!

链接到完整的JS代码

h43kikqp

h43kikqp1#

通过TypeScript中的JSDoc注解,可以使用@template标记为函数声明类型参数。这类似于使用尖括号()定义类型参数的TypeScript语法。

/**
 * @template T
 * @param {T} thing
 * @param {keyof T} prop
 */
function showProperty(thing, prop) {
    console.log(`${String(prop)}:`, thing[prop]);
}

VSCode and other code editors should now be able to see all the properties
链接到修改后的JS代码

相关问题