TypeScript错误:无效无法分配给参数类型

时间:2018-11-15 21:57:54

标签: typescript

我在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));
}

此错误的确切含义是什么?预先非常感谢

1 个答案:

答案 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(最好使用与类型匹配的默认值)。