首页 > 解决方案 > 函数上的空值合并

问题描述

我有一个界面

interface Foo {
   error?: string;
   getError?: (param: any) => string
}

假设我们总是想调用该函数,但它有可能未定义。对于基本类型,我们可以使用 ??

const error = foo.error ?? "No Error";

foo.getError(...)将抛出......不是一个可以理解的函数,如果没有:=)

那么,对于函数上的无效合并运算符是否有等效或优雅的替代方法,或者我是否总是必须做这样的事情:

const error = foo.getError ? foo.getError(...) ?? "No error" : "No error"

标签: typescript

解决方案


如果您在函数上使用可选链接,则可以将该行缩短为:

const error = foo.getError?.('...') ?? "No error"

推荐阅读