Typescript函数返回不带null或未定义的值
我正在尝试编写一个返回值的函数,或者如果该值为null或未定义,它应该返回一个默认值Typescript函数返回不带null或未定义的值,typescript,Typescript,我正在尝试编写一个返回值的函数,或者如果该值为null或未定义,它应该返回一个默认值 函数测试条件类型(其中不可为空是)通常不能在泛型函数中提供良好的实现。您可以使用类型断言使其工作(将输入作为任何)返回 更安全的方法可能是稍微将类型切换: function test<A, B>(input: A | undefined | null, fallbackValue: B): A | B { if (input == null || input == undefined) {
函数测试条件类型(其中不可为空
是)通常不能在泛型函数中提供良好的实现。您可以使用类型断言使其工作(将输入作为任何
)返回
更安全的方法可能是稍微将类型切换:
function test<A, B>(input: A | undefined | null, fallbackValue: B): A | B {
if (input == null || input == undefined) {
return fallbackValue;
} else {
return input;
}
}
declare var s: string | null;
let a = test(s, "") // string
功能测试(输入:A |未定义|空,回退值:B):A | B{
if(输入==null | |输入==未定义){
返回回退值;
}否则{
返回输入;
}
}
声明var s:string | null;
设a=test(“”//字符串
您的if和else分支没有交换吗?是的。在示例中修复了它,但错误是相同的:)您正在声明input:A
,但返回一个不可为空的。您可能需要声明input:nonnull
或返回A | B
。您可以将返回类型强制转换为不可为null,但这可能是一个逻辑错误。好的。谢谢你的解决方案对我有效。但是我对nonnull的使用是否错误,或者这是typescript中的一个bug/缺失功能,或者它是否按预期工作?@Dirk这是一个限制(不确定将来是否可以寻址)
function test<A, B>(input: A | undefined | null, fallbackValue: B): A | B {
if (input == null || input == undefined) {
return fallbackValue;
} else {
return input;
}
}
declare var s: string | null;
let a = test(s, "") // string