選單

void 在 JS 和 TS 中的區別

void 在 JS 和 TS 中的區別

如果你用過傳統的強型別語言,可能會很熟悉 的概念:一種型別,告訴你函式和方法在呼叫時不返回任何內容。

作為運算子存在於 JavaScript 中,而作為基本型別存在於 TypeScript 中。在這兩個世界中, 的工作機制與大多數人習慣的有點不同。

JavaScript 中的 void

JavaScript 中的 是一個運算子,用於計算它旁邊的表示式。無論評估哪個表示式,總是返回。

我們為什麼需要這樣的東西?首先在早期,人們能夠覆蓋 並給它一個實際值。 總是返回realundefined。

其次,這是一種呼叫立即呼叫函式的好方法:

所有這些都沒有汙染全域性名稱空間:

由於 總是返回 ,而 總是計算它旁邊的表示式,你有一個非常簡潔的方法從函式返回而不返回一個值,但仍然呼叫一個回撥例如:

這讓我想到了 最重要的通途:它是你程式的安全門。當你的函式總是應該返回 時,你可以確保始終如此。

TypeScript 中的 void

TypeScript 中的 是 的子型別。JavaScript 中的函式總是返回一些東西。要麼它是一個值,要麼是 :

因為沒有返回值的函式總是返回 ,而 總是在 JavaScript 中返回 ,TypeScript 中的 是一個正確的型別,告訴開發人員這個函式返回 :

作為型別也可以用於引數和所有其他宣告。唯一可以傳遞的值是 :

所以 和 幾乎是一樣的。雖然有一點點不同,但這種差別很大:作為返回型別的 可以用不同的型別替換,以允許高階回撥模式: