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

标签 arrays function typescript

更新 - 这个问题的背景是 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/

相关文章:

c - 指针数组和指针数组的内存分配

c - C 中函数的名称

python - 有没有办法在Python中打印函数的定义

javascript - [class] ="' success '"and class="success"在Angular中有区别吗?

typescript - 使用 addCommand (webdriverio) 添加自定义命令时出现 ts 错误

javascript - 尽管有模 if 语句,For 循环仍推送到数组两次

arrays - 点击手势 Swiftui

c - C中没有固定大小的字符数组

javascript - 摆脱多余的方法定义

angular - 连接两个可观察量并删除重复项