我正在阅读2ality blog post on TypeScript,遇到了以下代码-
const func: (num: number) => string = String;
我不明白这种语法的含义。
在TypeScript Playground中,它编译为-
var func = String;
据我了解,func
是一个带有参数num
的函数,该函数本身返回一个string
并将func
变量分配给{{1 }},因此整个函数事物变得无用,这意味着上述事物本来可以写成-
String
我正确吗?还是我理解Typescript错误?
答案 0 :(得分:2)
const func:(num:number)=>字符串=字符串;
这意味着存在一个变量func
,其类型为(num: number) => string
,其值为String类。
现在字符串构造函数接受一个值并返回一个字符串值。
对于在string
和String
之间感到困惑的人们
string
:引用字符串值。因此() => string
意味着一个函数返回一个字符串。在var a = 'abc'
中,a是字符串String
:注意大写字母S
。那是指字符串构造函数,它是一个函数。答案 1 :(得分:2)
此函数可将传递的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)
是字符串的原因。
答案 2 :(得分:1)
基本上,func
是一个函数(用x => y
表示),该函数将类型为num
的名为number
的变量作为输入,并返回一个{{1} }。在这种情况下,函数的值将分配给function String
,这是一个构造函数。
最后,string
是func
构造函数的新名称,因此它仅接受数字输入。因此,String
等同于func(5)
,它将返回“ 5”。
请注意,字符串String(5)
表示要声明的函数的模式。