我有一个这样的函数签名类型:
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
]