Я не знаю, сможете ли вы сделать это изнутри класса (как бы вы ни определяли первое, вы не будете знать о втором, и для этого также, вероятно, потребуются статические конструкторы).Однако я смог заставить его работать со статическими методами, вызываемыми после определения самих классов:
class Rubyish{
static appendProp(propName, value){
if (!this[propName]) {
this[propName] = []
}
this[propName].push(value)
}
static belongsTo(cls){
this.appendProp('belongsToClasses', cls)
}
static hasMany(cls){
this.appendProp('hasManyClasses', cls)
}
}
class Task extends Rubyish{
}
class Checklist extends Rubyish{
}
Task.belongsTo(Checklist)
Checklist.hasMany(Task)
Изменить, чтобы добавить: Возможно, это было излишним, как вы могли бы сделатьэто без статических методов:
class NewTask{}
class NewCheckList{}
NewTask.belongsTo = [NewCheckList]
NewCheckList.hasMany = [NewTask]