[英]What is the meaning of `const func: (num: number) => string = String;` in TypeScript?
我正在閱讀關於TypeScript的2ality博客文章 ,我遇到了以下代碼 -
const func: (num: number) => string = String;
我不明白這種語法的含義。
在TypeScript Playground中 ,它編譯為 -
var func = String;
根據我的理解, func
是一個函數,它接受一個參數num
,函數本身返回一個string
, func
變量被賦值給String
所以整個函數變得無用,這意味着上面的東西可以寫成簡單的 -
const func = String;
我對么? 還是我理解Typescript錯了?
它是一個將傳遞的Number
轉換為String
的函數。
您可以看到,如果輸入以下TypeScript:
const func: (num: number) => string = String;
console.log(func(123));
console.log(typeof func(123));
console.log(typeof 123);
它編譯為:
var func = String;
console.log(func(123));
console.log(typeof func(123));
console.log(typeof 123);
執行此代碼顯示123
, string
和number
:
var func = String; console.log(func(123)); console.log(typeof func(123)); console.log(typeof 123);
因此,上例中的func
返回new String(num)
,這就是為什么123
是數字,但func(123)
是一個字符串。
它基本上是說func
是一個函數(用x => y
表示),它將變量名為num
的類型number
作為輸入,並返回一個string
。 在這種情況下,函數的值被賦給函數String
,這是一個構造函數。
最后, func
是一個賦予String
構造func
的新名稱,因此它只接受數字輸入。 因此func(5)
將等效於String(5)
,它將返回“5”。
請注意,string (num: number) => string
表示正在聲明的函數的模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.