如何分配字符串 |未定义为 TypeScript 中的字符串?

How to assign string | undefined to string in TypeScript?

我想给一个变量赋值,它是string |未定义,到字符串变量,如您在此处看到的:

private selectedSerialForReplace(): string | undefined {
    return this.selectedSerials.pop();
  }

luminaireReplaceLuminaire(params: {  "serial": string; "newserial": string; }, options?: any): FetchArgs {
............
}

luminaireReplaceLuminaire({serial: this.selectedSerialForReplace(), newserial: response.output});

我收到此错误:

Argument of type '{ serial: string | undefined; newserial: any; }' is not assignable to parameter of type '{ "serial": string; "newserial": string; }'

我无法将 selectedSerialForReplace() 函数更改为 return 任何其他内容。你能帮帮我吗?

typescript 编译器执行严格的 null 检查,这意味着您不能将 string | undefined 变量传递到需要 string.

的方法中

要解决此问题,您必须在调用 luminaireReplaceLuminaire().

之前对 undefined 执行显式检查

在你的例子中:

private selectedSerialForReplace(): string | undefined {
    return this.selectedSerials.pop();
}

luminaireReplaceLuminaire(params: {  "serial": string; "newserial": string; }, options?: any): FetchArgs {
    ............
}

const serial = this.selectedSerialForReplace();
if(serial !== undefined) {
    luminaireReplaceLuminaire({serial, newserial: response.output});
}

如果你确定序列号不能是undefined你可以使用! post-fix operator

luminaireReplaceLuminaire({serial: this.selectedSerialForReplace()!, newserial: response.output});