TypeScript:函数的两种参数类型

时间:2018-12-25 07:40:55

标签: typescript

我需要传递给函数doSomething字符串或函数结果,该函数返回字符串:

const someFunction = (href: string) => {
    ...
};

type a = () => string;

export function doSomething (href: string | a): void {
    someFunction(href);
}

但是我得到一个错误:

'string |类型的参数a'不可分配给'string'类型的参数。不能将类型“ a”分配给类型“字符串”。

类型为a的函数返回字符串,那么为什么会出现此错误?

谢谢。

1 个答案:

答案 0 :(得分:3)

doSomething的{​​{1}}(如果类型为href,而string | () => string仅接受someFunction

如果TypeScript允许这样做,则可能会将string传递到只能处理() => string的函数中,这将导致运行时错误。

在某些情况下,string需要使用返回字符串的函数,但是您不能指望doSomething能够做到这一点,尤其是在您专门定义了它仅接受的参数之后的类型为someFunction