我需要传递给函数doSomething
字符串或函数结果,该函数返回字符串:
const someFunction = (href: string) => {
...
};
type a = () => string;
export function doSomething (href: string | a): void {
someFunction(href);
}
但是我得到一个错误:
'string |类型的参数a'不可分配给'string'类型的参数。不能将类型“ a”分配给类型“字符串”。
类型为a
的函数返回字符串,那么为什么会出现此错误?
谢谢。
答案 0 :(得分:3)
doSomething
的{{1}}(如果类型为href
,而string | () => string
仅接受someFunction
。
如果TypeScript允许这样做,则可能会将string
传递到只能处理() => string
的函数中,这将导致运行时错误。
在某些情况下,string
需要使用返回字符串的函数,但是您不能指望doSomething
能够做到这一点,尤其是在您专门定义了它仅接受的参数之后的类型为someFunction
。