此问题在此处已有答案:
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
1条答案
按热度按时间nuypyhwy1#
我不认为使用任何条件返回类型是有效的TS,除非您指定它,但是如果是这样,我无法想象这将是一个好的实践,除非您有一个非常具体的场景,在那里是必要的。
你可以把
null extends typeof param ? null : string
改为string | null
,这样你就可以随意返回null或者string。