当前位置: 首页 > 知识库问答 >
问题:

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

张华池
2023-03-14

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

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

var f : (string) => string

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

var g : string[]

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

我的第一个猜测是:

var h : ((string) => string)[]

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

共有2个答案

冯俊英
2023-03-14

根据你的研究,我写了一个小班PlanetGreeter/SayHello:'

/* 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();
李宁
2023-03-14

我想通了。问题是=

正如规范所说:

窗体的函数类型文字

(参数列表)=

与对象类型文字完全等效

{(参数列表):返回类型}

所以我想要的是:

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

完整示例:

var f : (string) => string

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

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

h = [];

h.push(f);

更新:

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

var h: ((string) => string)[]

在1.4中进一步更新它!

 类似资料:
  • 我有一个使用函数的string参数并传递给返回最长单词的函数的代码。 我想知道是否可以使用,然后使用索引访问每个字母表,这样我就可以知道字符串中有多少个单词,然后比较它们,这样我就可以返回最长的单词。 我是这样开始的。它与典型数组很好地工作,但典型数组需要预定义的大小。

  • 问题内容: 好的,这就是我的for子手游戏代码,我唯一要做的就是让我的程序将其中一个单词随机化,这应该在方法中成功完成。但是我唯一的问题是让String变量 “ word” 返回到主类(在主类中的所有 “ word” 变量下面都有错误)。 如果我可以通过这种方法获得另一种帮助,或者从列表中产生随机单词的另一种方法,那将是惊人的。 问题答案: 在Java中,参数是通过值而不是引用传递的。因此,您不能

  • 我一直在和一个朋友练习面试问题,他把他编的这道题扔给我: 给定一个方法来告诉您一个字符串是否有效,请编写一个方法来获取一个字符串,并返回最长的有效子字符串(而不对字符重新排序)。 > 检查输入字符串 检查的所有子集,使用== 以此类推,直到检查所有长度为1的子集,然后返回false 但不幸的是,我很难理解。 最好的解决方案是在所有子集中进行深度优先的递归迭代,并从那里返回最长的有效字符串吗?

  • 问题内容: 如何从WebAssembly函数返回JavaScript字符串? 下列模块可以用C(++)编写吗? 另外:我可以将其传递给JS引擎进行垃圾回收吗? 问题答案: WebAssembly本身不支持字符串类型,它,而支撑件///值类型以及/用于存储。 这取决于您要执行的操作,但似乎直接访问缓冲区是最简单的: 如果您的模块具有功能,那么它将在实例化时执行。否则,您可能会调用一个导出,例如。 完

  • //即使在返回成功消息后,我仍然收到预期的字符串返回…//任何帮助都将不胜感激

  • 我有一个家庭作业来创建这个函数。这是我的密码: 以下是此函数的输出与预期输出:https://i.imgur.com/e524tW6.png