typescript 返回类型的类型收缩条件为空参数[duplicate]

raogr8fs  于 2023-02-17  发布在  TypeScript
关注(0)|答案(1)|浏览(126)

此问题在此处已有答案

Typescript function return type null if parameter null(1个答案)
昨天关门了。
我希望我的函数在某个参数为null时返回null。我相信以该参数为条件的正确返回类型是null extends typeof param ? null : string。然而,当我以参数null为条件返回null时,TS对我不满意:

export const foo1 = (param: string | null): null extends typeof param ? null : string => {
  if(typeof param === null) {
    return null
  }
  // error: Type '""' is not assignable to type 'null'.(2322)
  return "";
}

当我返回null时,我应该将param与什么进行比较,以便TS在我返回string时感到满意?
TSPlayground

nuypyhwy

nuypyhwy1#

我不认为使用任何条件返回类型是有效的TS,除非您指定它,但是如果是这样,我无法想象这将是一个好的实践,除非您有一个非常具体的场景,在那里是必要的。
你可以把null extends typeof param ? null : string改为string | null,这样你就可以随意返回null或者string。

export const foo1 = (id: string | null): string | null => {
  if(typeof id === null) {
    return null
  }
  
  return "";
}

相关问题