TypeScript中的const func:(num:number)=> string = String;是什么意思?

时间:2019-02-21 06:29:50

标签: javascript typescript function ecmascript-6

我正在阅读2ality blog post on TypeScript,遇到了以下代码-

const func: (num: number) => string = String;

我不明白这种语法的含义。

TypeScript Playground中,它编译为-

var func = String;

据我了解,func是一个带有参数num的函数,该函数本身返回一个string并将func变量分配给{{1 }},因此整个函数事物变得无用,这意味着上述事物本来可以写成-

String

我正确吗?还是我理解Typescript错误?

3 个答案:

答案 0 :(得分:2)

  

const func:(num:number)=>字符串=字符串;

这意味着存在一个变量func,其类型为(num: number) => string,其值为String类。

现在字符串构造函数接受一个值并返回一个字符串值。


对于在stringString之间感到困惑的人们

  • string:引用字符串值。因此() => string意味着一个函数返回一个字符串。在var a = 'abc'中,a是字符串
  • String:注意大写字母S。那是指字符串构造函数,它是一个函数。

以下是String的定义: enter image description here

答案 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);

执行此代码将显示123stringnumber

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,这是一个构造函数。

最后,stringfunc构造函数的新名称,因此它仅接受数字输入。因此,String等同于func(5),它将返回“ 5”。

请注意,字符串String(5)表示要声明的函数的模式。