Recientemente comencé a aprender a usar Mobx para administrar el estado de mi aplicación y recientemente encontré el siguiente error:
Object literal may only specify known properties, and "data" does not exist in type "AnnotatiosMap<this, never>".Esto sucede cada vez que quiero hacer que una propiedad de mi clase sea privada. Sin embargo, si es público o protegido, el problema no se produce.
Este es un pequeño fragmento de mi código:
import { makeObservable, observable } from "mobx"; class Base { private data: string[]; constructor() { this.data = []; makeObservable(this, { data: observable, }); } public getData = (): string[] => { return this.data; }; } export default new Base();¿Qué debo hacer para que mi propiedad sea privada pero siga siendo vigilada?
¡Qué tengas un lindo día!
Por defecto, TypeScript no le permitirá anotar campos privados. Esto se puede solucionar pasando explícitamente los campos privados relevantes como argumento genérico, así:
makeObservable<MyStore, "privateField" | "privateField2">(this, { privateField: observable, privateField2: observable })