1. ホーム
  2. typescript

[解決済み] 型付き関数の配列

2023-08-16 06:30:05

質問

TypeScriptで、静的型付けされた関数の配列を宣言することが可能かどうか、悩んでいます。

例えば、こんなことができるんです。

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

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

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

TypeScriptはこの関数を、文字列を受け取ってvoidの配列を返す関数だと考えているため、うまくいかない。また、関数を括弧でくくるのも気に入らないようだ。

何かいい方法はないでしょうか?

回答 : 下記の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();

どのように解決するのですか?

あなたは、これを 言語仕様 セクション 3.6.4 にあります。

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