如何设置Typescript函数语句的签名类型?



我有一个这样的函数签名类型:

type MyFunc = (foo: string) => string

如何使用这个签名来设置函数语句的类型(不是)函数表达式)?例如,当我有一个函数数组,如

[(foo) => foo + "bar", () => "bar"]

不为数组设置类型,我能以某种方式执行数组内的功能,这样的签名() => "bar"抛出一个错误,因为类型不匹配?我想象的是这样的:

[((foo) => foo + "bar"): MyFunc, (() => "bar"): MyFunc]

显然这不是有效的语法。有办法做到这一点吗?

您可以使用as,但() => string目前是(foo: string) => string的有效子类型,因此您不会得到错误。(实现可以自由忽略任何参数。)

type MyFunc = (foo: string) => string
[
((foo) => foo + "bar") as MyFunc, // No error
(() => "bar") as MyFunc,          // No error
((x: number) => "bar") as MyFunc, // Error
]

最新更新