簡體   English   中英

如果我們在沒有括號的情況下調用 function,為什么 Typescript 不會拋出錯誤?

[英]Why doesn't Typescript throw an error if we call a function without parenthesis?

我一直在研究 Typescript 一段時間,並注意到這種奇怪的行為。 如果您在不帶括號的情況下調用 function,Typescript 不會引發錯誤。 而是在控制台上打印整個 function。 這是為什么? 我在 C++ 中沒有看到這種行為。

函數是 JavaScript 中的一等成員(而 TypeScript 是 JavaScript 的擴展)。 它們可以像數字和字符串以及 arrays 等任何其他表達式一樣分配給變量並傳遞——只要它輸入正確(在 TypeScript 中)。

 const fn = () => { return 10; }; const bar = fn; const result = bar(); console.log(bar); console.log(result);

由於console.log實際上允許任何參數類型,因此不禁止在 TypeScript 中記錄函數。

但是如果你試圖引用 function而不調用它,當你真正需要調用它來提取返回值時,一旦你嘗試使用結果,你很快就會遇到錯誤。 例如:

const subArr = arr.slice();

創建數組的淺部分。 如果你不小心做了

const subArr = arr.slice;

然后嘗試在預期其類型為數組的任何地方使用subArr , TypeScript 會拋出錯誤,因為它確定subArr的類型是function ,而不是類型Array

它與 typescript 無關,而是 javascript 這樣做。 它將打印您提供給控制台日志的任何內容。 因此,如果您給 function 名稱不帶括號,它將打印 function 定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM