TypeScript 中 setTimeout 的返回型別

Migel Hewage Nimesha 2022年5月18日
TypeScript 中 setTimeout 的返回型別

setTimeout() 是一種用於在指定的時間(以毫秒為單位)後呼叫函式的方法。此方法充當計時器,並在計時器到期後執行程式碼。

setTimeout() 不能多次執行;它只能執行一次。如果需要重複執行,則應使用 setInterval() 方法而不是 setTimeout()

此外,setTimeout() 也稱為非同步函式。它不會一次執行一項任務。

取而代之的是,在執行另一個功能時,會執行按優先順序執行的較晚功能。因此,可以執行非同步函式,但不能用於在函式堆疊中的函式之間建立暫停。

本文將解釋 setTimeout() 函式的返回型別以及如何在 TypeScript 中指定它。

TypeScript 中 setTimeout() 的返回型別

沒有必要通過讓型別推斷識別並返回正確的返回型別來指定返回型別。

如果在邏輯上必須建立返回型別,我們可以使用兩種主要方法,例如瀏覽器和節點宣告之間沒有一致性的例項。

可以使用 ReturnType 方法,以便 setTimeout() 的返回型別和變數型別相同。另一種方法是 window.setTimeout(),它將返回實際的返回型別。

在 TypeScript 中使用 ReturnType 指定 setTimeout() 的返回型別

我們可以使用的一種方法是 ReturnType。它不指定特定型別,而是讓型別自動推斷。

const timer: ReturnType<typeof setTimeout> = setTimeout(() => {
    console.log("Hi!")
}, 3000);

輸出:

Hi!

上述程式碼的輸出將在程式碼執行三秒後出現。

考慮另一個示例,我們將返回型別指定為 number

const timer: number = setTimeout(() => {
    console.log("Hi!")
}, 2000);

輸出:

Hi!

上述方法在 Node.js 中會遇到錯誤。

在 Node.js 計時器中,返回的是物件而不是數字返回值。因此,我們可以使用 window.setTimeout() 來避免這種情況。

在 TypeScript 中使用 window.setTimeout() 指定 setTimeout() 的返回型別

window.setTimeout()setTimeout() 都執行類似的功能,但它們在不同的地方執行。window.setTimeout() 只能在瀏覽器上執行它的操作,而 setTimeout() 可以在任何地方執行它的操作。

當不使用瀏覽器時,我們可以呼叫全域性物件的方法,而不需要引用該物件。但是,當 TypeScript 或 JavaScript 在瀏覽器上執行時,文件物件模型 (DOM) 負責提供全域性物件。

因此,windowwindow.setTimeout() 中指定,因為文件物件模型指定全域性物件具有 window 屬性。

語法:

window.setTimeout(function() {}, 0);
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.