更新 - 这个问题的背景是 TypeScript 1.4 之前的版本。从那个版本开始,我的第一个猜测得到了语言的支持。查看答案的更新。
我可以将 f
声明为接受字符串并返回字符串的函数:
var f : (string) => string
我可以将 g
声明为一个字符串数组:
var g : string[]
如何将h
声明为“接受字符串并返回字符串的函数”的数组?
我的第一个猜测:
var h : ((string) => string)[]
这似乎是一个语法错误。如果我去掉多余的括号,那么它就是一个从字符串到字符串数组的函数。
最佳答案
我想通了。问题是函数类型文字的 =>
本身只是语法糖,不想与 []
组合。
正如规范所说:
A function type literal of the form
( ParamList ) => ReturnType
is exactly equivalent to the object type literal
{ ( ParamList ) : ReturnType }
所以我想要的是:
var h : { (s: string): string; }[]
完整示例:
var f : (string) => string
f = x => '(' + x + ')';
var h : { (s: string): string; }[]
h = [];
h.push(f);
更新:
从this changeset来看1.4 中的类型声明中将允许使用括号,因此问题中的“第一次猜测”也将是正确的:
var h: ((string) => string)[]
进一步更新在1.4中!
关于arrays - 在 TypeScript 中,如何声明接受字符串并返回字符串的函数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706161/