1. ホーム
  2. typescript

[解決済み] TypeScriptのsetTimeoutはどのような戻り値型を使用すればよいですか?

2022-03-03 11:53:16

質問

次のコードを考えてみてください。

const timer: number = setTimeout(() => '', 1000);

Typescript がエラーを投げます。 Type 'Timer' is not assignable to type 'number'. 簡単に調べると setTimeout を返します。 NodeJS.Timer .

しかし、もし私が ブラウザベースの開発 を使用しています。 NodeJS.Timer が間違っている気がする。を作るための正しい型定義や戻り値の型はどれでしょうか? setTimeout に頼ることなく動作します。 any を宣言するのですか?

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

最も単純な解決策は、型推論が機能するようにし、型を一切指定しないことです。ブラウザとノード宣言の間で型が一貫していないことを見て、型を指定する必要がある場合は、次のようにすることができます。 ReturnType の戻り値の型が何であれ、その変数の型になるように指定します。 setTimeout があります。

const timer: ReturnType<typeof setTimeout> = setTimeout(() => '', 1000);

交互に window.setTimeout を使用することもできます。 setTimeout . これは、適切な戻り値の型を返します。