diff --git a/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts b/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts index 9f2420d6e..c9042ddb3 100644 --- a/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts +++ b/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts @@ -1115,3 +1115,22 @@ test(`decorated field can be inherited, but doesn't inherite the effect of decor const subStore = new SubStore() expect(isAction(subStore.action)).toBe(false) }) + +test(`inheritance should work with computed`, () => { + class Store { + @computed + get getNumber() { + return 1 + } + } + + class SubStore extends Store { + @computed + override get getNumber() { + return super.getNumber + 1 + } + } + + const store = new SubStore() + expect(store.getNumber).toBe(2) +}) diff --git a/packages/mobx/src/types/computedannotation.ts b/packages/mobx/src/types/computedannotation.ts index dd398741f..b6d792688 100644 --- a/packages/mobx/src/types/computedannotation.ts +++ b/packages/mobx/src/types/computedannotation.ts @@ -64,11 +64,13 @@ function decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorCon options.name ||= __DEV__ ? `${adm.name_}.${key.toString()}` : `ObservableObject.${key.toString()}` - adm.values_.set(key, new ComputedValue(options)) + const computedValue = new ComputedValue(options) + adm.values_.set(key, computedValue) + adm.values_.set(get, computedValue) }) return function () { - return this[$mobx].getObservablePropValue_(key) + return this[$mobx].getObservablePropValue_(get) } }