我在TypeScript中遇到此错误:
Argument type (response: Response<DSBMannschaftDTO[]>) => void is not
assignable to parameter type ((value:Response<DSBMannschaftDTO[]>) =>
(PromiseLike<void> | void)) null | undefined | undefined
这是我的模式:
export class DsbMannschaftDTO implements DataTransferObject {
id: number;
vereinId: number;
nummer: number;
benutzerId: number;
veranstaltungsId: number;
version: number;
static copyFrom(optional: {
id?: number,
vereinId?: number,
nummer?: number,
benutzerId?: number;
veranstaltungsId: number;
version?: number
} = {}): DsbMannschaftDTO {
const copy = new DsbMannschaftDTO();
copy.id = optional.id || null;
copy.vereinId = optional.vereinId || null;
copy.benutzerId = optional.benutzerId || null;
copy.veranstaltungsId = optional.veranstaltungsId || null;
copy.nummer = optional.nummer || null;
copy.version = optional.version || null;
return copy;
}
}
这是我的代码
private loadTableRows() {
this.loading = true;
this.dsbMannschaftDataProvider.findAll()
.then(onfulfilled:(response: Response<DsbMannschaftDTO[]>) => this.handleLoadTableRowsSuccess(response))
.catch(onrejected:(response: Response<DsbMannschaftDTO[]>) => this.handleLoadTableRowsFailure(response));
}
此错误的确切含义是什么?预先非常感谢
答案 0 :(得分:0)
这里的问题是您的对象定义。您将DsbMannschaftDTO
定义为:
id: number; <- value has to be a number
vereinId: number; <- value has to be a number
,依此类推。现在,您传递带有定义的options对象:
id?: number, <- number or undefined
vereinId?: number, <- number or undefined
这是number
的第一个错配。 number | undefined
无法分配给number
。
然后您写:
copy.id = optional.id || null; <- copy.id can now be number or undefined or null.
这是number
的第二个不匹配项。 number | undefined | null
无法分配给number
。
要解决此问题,请将空值替换为0
(最好使用与类型匹配的默认值)。