如何解决对象文字可能只指定已知属性,并且类型“Partial<Object>”中不存在“xxxx”在 ModalOptions

问题描述

背景

基本上,我已经创建了一个 mixin,用于在 ngx-bootstrap/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
    }
  };

简单地说,我所实现的是扩展我的 modalMixin() 函数的任何类都具有打开和关闭模态所需的所有属性函数。如果我调用 this.openModal({id: 123,component: SomeCompenent}),那么 SomeComponent 将被打开,@Input = 123 123 是在 openModal 函数中传递的值。

挑战

上述功能仅在我收到以下错误时有效

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},

我确实理解错误的含义。正如这个问题 Why am I getting an error "Object literal may only specify known properties"? 中所述,我了解未包含在类型中的属性将引发错误

但是我如何将 { id: number } 作为 Partial<Object> 传递?简单地说,Partial<Object>

中包含哪些属性

解决方法

目前我找到了两种方法来消除错误

config: ModalOptions = {
      initialState: {id: 0} as Partial<Object>,backdrop: true,};

而且很简单

config: any = {
      initialState: {id: 0} as Partial<Object>,};

上述方法似乎解决了问题,我现在需要的是如何创建 Partial<Object> 形式的对象?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)