首页 文章

一个Typed函数数组

提问于
浏览
46

我很难弄清楚TypeScript中是否可以声明一个静态类型的函数数组 .

例如,我可以这样做:

foo: (data:string) => void = function (data) {};

但是如果我想让foo成为一个函数数组,它接受一个字符串而不返回任何内容,我该怎么做呢?

foo: (data:string) => void [] = [];

不起作用,因为TypeScript认为它是一个接受一个字符串并返回一个void数组的函数,它似乎不喜欢我试图将函数包装在括号中 .

有任何想法吗?

Answer :感谢下面的mohamed,这是一个适用于TypeScript Playground的示例:

class whatever {
public foo: { (data: string): void; }[] = [];

    dofoo() {
        for (var i=0; i < this.foo.length; i++) {
             this.foo[i]("test");
        }
    }
}

var d = new whatever();

d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})

d.dofoo();

2 回答

  • 64

    您可以在language spec部分3.5.5中找到它:

    foo: { (data: string): void; } []
    
  • 34

    使用胖箭头键入函数数组的其他(更新,更可读)方法:

    let foo: Array<(data: string) => void>;
    let bar: ((data: string) => void)[];
    

相关问题