1. ホーム
  2. タイプ

[解決済み】TypeScriptのコールバックタイプの定義

2022-04-08 23:10:45

質問

TypeScriptで以下のようなクラスがあります。

class CallbackTest
{
    public myCallback;

    public doWork(): void
    {
        //doing some work...
        this.myCallback(); //calling callback
    }
}

このようなクラスを使っています。

var test = new CallbackTest();
test.myCallback = () => alert("done");
test.doWork();

コードが動作するので、期待通りにメッセージボックスが表示されます。

私の質問は、私のクラス・フィールドに提供できる型はあるかということです。 myCallback ? 今現在、パブリックフィールド myCallback は、型が any のようになります。コールバックのメソッドシグネチャはどのように定義すればよいのでしょうか?あるいは、コールバックの型を設定すればよいのでしょうか?または、これらのいずれかを行うことができますか?また any (implicit/explicit)?

このようなことをやってみたのですが、うまくいきませんでした(コンパイル時エラー)。

public myCallback: ();
// or:
public myCallback: function;

ネットで調べてもこれといった説明がなかったので、ご教授いただければと思います。

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

TypeScriptの言語仕様の中にあるものを見つけただけなので、かなり簡単です。かなり惜しいことをしました。

は、以下のような構文です。

public myCallback: (name: type) => returntype;

私の例では、次のようになります。

class CallbackTest
{
    public myCallback: () => void;

    public doWork(): void
    {
        //doing some work...
        this.myCallback(); //calling callback
    }
}

型の別名として。

type MyCallback = (name: type) => returntype;