81

TypeScript で静的に型指定された関数の配列を宣言できるかどうかを判断するのに苦労しています。

たとえば、私はこれを行うことができます:

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

しかし、foo を、文字列を受け取って何も返さない関数の配列にしたい場合は、どうすればよいでしょうか?

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

TypeScript は、文字列を受け取って void の配列を返す関数であると認識しているため、機能しません。また、関数を角かっこで囲もうとしているのが気に入らないようです。

何か案は?

回答: 以下のモハメドのおかげで、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();
4

4 に答える 4

105

これは、言語仕様セクション 3.6.4で見つけることができます。

foo: { (data: string): void; } []
于 2012-10-04T19:55:42.667 に答える