Búsqueda de sitios web

¿Cómo añado soporte de TypeScript para MobX?


Como puedes ver, el método "replace" no es compatible con ts. Quizás debería usar IObservableArray en lugar de Array, pero surgió otro problema.

Respuesta #1

Hay algunas soluciones, pero sí, deberías usar IObservableArray para asegurarte de que tienes y usas los métodos correctos.

Usé esta solución alternativa:

 this.files = [] as any;

o una solución de tipo más definido:

 function MyArray<T>(): IObservableArray<T> {
     return [] as any; // disable eslint once here.
 }

 this.files = MyArray();

Solución aconsejada

Este problema ya se discutió antes en GitHub: https://github.com/mobxjs/mobx/issues/669

La solución proporcionada es establecerlo como propiedad de solo lectura una vez:

class AppModel {
  readonly files = observable<IFile>([])
}

esta es la solución escrita más corta que también asegura que no volverás a establecer this.files por error (y perder a todos tus observadores).

Respuesta #2

Tu problema no es mobx ni typescript, estás usando un método que no existe en el tipo de objeto Array. ¿Qué esperas que haga este método "replace" en un array?