如何解决如何解决对象文字可能只指定已知属性,并且类型“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 举报,一经查实,本站将立刻删除。