angular - ¿Cómo resuelvo 'El literal de objeto solo puede especificar propiedades conocidas, y 'xxxx' no existe en el tipo 'Partial<Object>'.' en ModalOptions?
Fondo
Básicamente, había creado un mixin para abrir y cerrar mis modales en ngx-bootstrap/modal
A continuación se muestra el código para el modal
modalMixin.ts
export const modalMixin = <T extends Constructor>(BaseClass: T = class {
} as T) =>
class extends BaseClass {
config: ModalOptions = {
initialState: {id: 0}, // Problem is occurring here
backdrop: true,
ignoreBackdropClick: true,
animated: true,
};
modalRef: BsModalRef;
modalServiceInjected: BsModalService;
constructor(...args: any[]) {
super(...args);
this.modalServiceInjected = args[0];
}
openModal({id, component}: { id: number; component: any; }) {
this.storeInjected.dispatch(loadModals());
this.config.initialState = {id};
this.modalRef = this.modalServiceInjected.show(component, this.config);
this.modalRef.setClass('modal-lg bg-dark text-light modal-container ');
}
closeModal() {
// Some code here to dispatch action to close modal
}
};
Simplemente lo que he logrado es que cualquier clase que extienda mi función modalMixin() tenga todas las propiedades y funciones necesarias para abrir y cerrar un modal. Si llamo a this.openModal({id: 123, component: SomeComponent}), entonces SomeComponent se abrirá con @Input=123, siendo 123 el valor pasado en la función openModal.
Desafío
La funcionalidad anterior está funcionando solo que recibo el siguiente error
Error: src/app/mixins/modal.mixin.ts:13:22 - error TS2322: Type '{ id: number; }' is not assignable to type 'Partial<Object>'.
Object literal may only specify known properties, and 'id' does not exist in type 'Partial<Object>'.
13 initialState: {id: 0},
Entiendo lo que el error está diciendo. Como se indica en esta pregunta ¿Por qué estoy recibiendo un error "Object literal may only specify known properties"?, entiendo que las propiedades no incluidas en el tipo generarán un error
pero ¿cómo paso { id: number } como un Partial<Object>? Simplemente, ¿qué propiedades están incluidas en Partial<Object>
WorkAround
Actualmente he encontrado dos maneras de hacer que el error desaparezca
config: ModalOptions = {
initialState: {id: 0} as Partial<Object>,
backdrop: true,
ignoreBackdropClick: true,
animated: true,
};
Y simplemente
config: any = {
initialState: {id: 0} as Partial<Object>,
backdrop: true,
ignoreBackdropClick: true,
animated: true,
};
Los enfoques anteriores parecen resolver el problema, lo que necesito ahora es cómo crearía un Objeto de la forma Partial<Object>?