我想正确地记录以下方法,您有一个基类和多个孩子,每个孩子都有一组特定的属性。问题在于我们的类型提示无法正常工作,它们总是为any
属性返回attrs
。
class Model {
constructor(attrs) {
this.attrs = attrs
}
}
class User extends Model {
/**
* @param {UserAttributes} attrs
*/
constructor(attrs) {
super(attrs)
}
}
class Company extends Model {
/**
* @param {CompanyAttributes} attrs
*/
constructor(attrs) {
super(attrs)
}
}
我尝试使用以下方法,但它们似乎不起作用
/**
* @template T
*/
class Model {
/**
* @param {T} attrs
*/
constructor(attrs) {
this.attrs = attrs
}
}
/**
* @template T
*/
class Model {
/**
* @param {InstanceType<T>} attrs
*/
constructor(attrs) {
this.attrs = attrs
}
}
/**
* @type {UserAttributes}
*/
const attrs = {}
const user = new User(attrs)
/**
* @class
* @property {UserAttributes} attrs
*/
class User {
super(attrs)
}
一个人如何做到这一点?
我们正在编写普通的JS,但是我们在代码库中确实使用了JSDoc / Typescript检查,并设置了VS Code,以便它可以读取我们的自定义*.d.ts
文件,因此也许我们也可以利用这些文件。 / p>