我有类型:
type TaskType = "return professions";
并且在界面中有一个描述的功能:
interface IInterfaceName
{
getReponse(message: string, task?: TaskType): string | string[];
}
我的任务是让函数返回 not string | string[],而是一个更广为人知的类型。对于当前任务,如果我们传入taksvalue "return professions",函数应该返回string,但如果我传递undefined(或调用函数而不传递参数),我想得到类型string。
我听说过infer,也许这将是解决方案。但是我不明白怎么写。
getResponse("test") // return type: string
getResponse("test", "return professions") // return type: string[]
从个人经验来看:对返回类型的各种检查会导致更多的混乱,尽管它们也可以使用。
在一个具体的例子中,签名只是简单地重载,TS 自己会判断哪些参数更适合。
UPD1:更多示例:
typescriptlang.org 播放
UPD2:查看更多