【发布时间】:2019-07-11 22:34:29
【问题描述】:
我正在尝试编写一个返回值的函数,或者如果该值为 null 或未定义,它应该返回一个默认值。
function test<A, B>(input: A, fallbackValue: B): NonNullable<A> | B {
if (input == null || input == undefined) {
return fallbackValue;
} else {
return input;
}
}
我得到了错误
Type 'A' is not assignable to type 'B | NonNullable<A>'.
Type 'A' is not assignable to type 'NonNullable<A>'.
NonNullable 应该是没有 null 或 undefined 的 A,这就是我在 if 中检查的内容?
【问题讨论】:
-
你的 if 和 else 分支不是交换了吗?
-
糟糕,是的。在示例中修复它,但错误是一样的:)
-
您声明了
input: A,但返回了NonNullable<A>。看来您要么需要声明input: NonNullable<A>,要么返回A | B。您可以将返回类型转换为NonNullable<A>但这可能是一个逻辑错误。
标签: typescript