在TypeScript中,如何声明接受字符串并返回字符串的函数数组?

Dan*_*ker 22 arrays function typescript

更新 - 此问题的上下文是预先TypeScript 1.4.从那个版本开始,我的第一个猜测得到了语言的支持.请参阅答案的更新.


我可以声明f是一个接受字符串并返回字符串的函数:

var f : (string) => string
Run Code Online (Sandbox Code Playgroud)

我可以声明g是一个字符串数组:

var g : string[]
Run Code Online (Sandbox Code Playgroud)

如何声明h为"接受字符串并返回字符串的函数"的数组?

我的第一个猜测:

var h : ((string) => string)[]
Run Code Online (Sandbox Code Playgroud)

这似乎是一个语法错误.如果我拿掉额外的括号,那么它是一个从字符串到字符串数组的函数.

Dan*_*ker 40

我想到了.问题是=>函数类型文字本身只是语法糖而不想构成[].

正如规范所说:

表单的函数类型文字

(ParamList)=> ReturnType

完全等同于对象类型文字

{(ParamList):ReturnType}

所以我想要的是:

var h : { (s: string): string; }[]
Run Code Online (Sandbox Code Playgroud)

完整的例子:

var f : (string) => string

f = x => '(' + x + ')';

var h : { (s: string): string; }[]

h = [];

h.push(f);
Run Code Online (Sandbox Code Playgroud)

更新:

这个变更集判断,在1.4中的类型声明中将允许使用括号,因此问题中的"第一个猜测"也是正确的:

var h: ((string) => string)[]
Run Code Online (Sandbox Code Playgroud)

进一步更新它在1.4!