首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在TypeScript中,如何声明接受字符串并返回字符串的函数数组?

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

Stack Overflow用户
提问于 2012-10-03 18:01:39
回答 2查看 12.8K关注 0票数 25

UPDATE -这个问题的上下文是pre-TypeScript 1.4。从那个版本开始,我的第一个猜测就得到了语言的支持。请查看答案的更新。

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

代码语言:javascript
复制
var f : (string) => string

我可以将g声明为字符串数组:

代码语言:javascript
复制
var g : string[]

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

我的第一个猜测是:

代码语言:javascript
复制
var h : ((string) => string)[]

这似乎是一个语法错误。如果去掉多余的圆括号,它就是一个从字符串到字符串数组的函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-03 19:00:23

我想通了。问题是,函数类型文字的=>本身仅仅是语法糖,并不想与[]组合。

正如说明书所说:

表单的函数类型文字

( ParamList ) => ReturnType

完全等同于对象类型文本

{( ParamList ):ReturnType }

所以我想要的是:

代码语言:javascript
复制
var h : { (s: string): string; }[]

完整示例:

代码语言:javascript
复制
var f : (string) => string

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

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

h = [];

h.push(f);

更新

this changeset判断,1.4中的类型声明中将允许使用括号,因此问题中的“第一个猜测”也将是正确的:

代码语言:javascript
复制
var h: ((string) => string)[]

进一步更新它在1.4版本中!

票数 42
EN

Stack Overflow用户

发布于 2014-03-31 17:19:54

基于你的研究,我写了一个小类PlanetGreeter/SayHello:`

代码语言:javascript
复制
/* PlanetGreeter */

class PlanetGreeter {
    hello    : { () : void; } [] = [];
    planet_1 : string = "World";
    planet_2 : string = "Mars";
    planet_3 : string = "Venus";
    planet_4 : string = "Uranus";
    planet_5 : string = "Pluto";
    constructor() {
        this.hello.push( () => { this.greet(this.planet_1); } );
        this.hello.push( () => { this.greet(this.planet_2); } );
        this.hello.push( () => { this.greet(this.planet_3); } );
        this.hello.push( () => { this.greet(this.planet_4); } );
        this.hello.push( () => { this.greet(this.planet_5); } );
    } 
    greet(a: string): void { alert("Hello " + a); }
    greetRandomPlanet():void { 
        this.hello [ Math.floor( 5 * Math.random() ) ] (); 
    } 
} 
new PlanetGreeter().greetRandomPlanet();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12706161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档