我有一个类和一个函数,它将该类的实例或类似的POJO对象作为参数。
我想使用JSDoc注释这个函数。
class Test {
constructor(a, b) {
this.a = a;
this.b = b;
}
}
/**
* @param {Test} test
*/
function handleTest(test) {
console.log(test.a, test.b);
}
// Webstorm complains that argument is not of type Test
handleTest({
a: 'this is a'
});
使用@param {Test} test
几乎有效...但WebStorm抱怨POJO不能分配给Test类型。
我是否可以做一些JSDoc技巧,以明确Test
和Test
类对象的实例都可以?
答案 0 :(得分:0)
使用type union:
/**
* @param {Test|{a,b}} test
*/
function handleTest(test) {
console.log(test.a, test.b);
}
该类型的|{a,b}
部分表示单独的允许类型。您可以只使用{Test|{}}
,但IDE不知道a
和b
是预期的属性。
这是简写版;您还可以定义“Test-like”对象,以防您计划在多个地方使用和记录TestLike对象:
/**
* @typedef {object} TestLike
* @property {string} a - some property a
* @property {string} b - some property b
*/
/**
* @param {Test|TestLike} test
*/
handleTest(test) {
// ...
}