我有一个非常简单的函数,它接受一个可以是任何类型的参数。我只检查是否定义了这个参数,但是如果没有,如果类型为HttpError(来自SvelteKit),它将返回一个错误。
function safe<T>(arg: T): T {
return arg ?? HttpError;
}
我试图让它在参数没有定义的情况下同时返回参数类型和HttpError。我尝试使用泛型,但我得到的消息是“HttpError不可赋值给类型'T'”。'T'可以用与HttpError '无关的任意类型示例化。
有什么办法可以解决这个问题吗?我试着做一个工会回报,但它不工作。
1条答案
按热度按时间qncylg1j1#
问题可能是你在应该返回一个示例的时候却返回了一个类。即
也不需要显式输入返回值,它将被自动推断。在这种情况下,编译器还将添加null检查并推断:
您可能还需要考虑仅仅抛出错误,这取决于函数的使用方式。
顺便说一句,如果你想要明确的返回类型,在VS Code中,你可以先写一个没有类型的函数,然后应用重写快速修复“推断函数返回类型”,它会为你添加正确的类型。