[英]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.