TypeScript:函数类型之间的区别

时间:2014-05-07 10:09:36

标签: function types typescript

TypeScript中这两个变量的类型之间的形式差异是什么?

var randomStringId = () => Math.random().toString(36).substr(2, 9);
function randomStringId2() {
    return Math.random().toString(36).substr(2, 9);
}

randomStringId的类型为() => stringrandomStringId2的类型为(): string。他们不一样吗?如果有,怎么样?或者只是我的IDE显示两种基本相同的类型?

2 个答案:

答案 0 :(得分:3)

你的功能是一样的。 但是,这两个功能不是:

var getX = () => this.x

function getX() {
    return this.x
}

查看生成的js代码:

var _this = this;
var getX = function () {
    return _this.x;
};

function getX() {
   return this.x;
}

使用箭头符号() =>定义的函数会在this定义时捕获{{1}}的引用。

答案 1 :(得分:1)

Types 绝对没有区别。两者都完全一样。他们什么都不带,并返回一个字符串。

以下是证据:

interface Foo1{
    foo:()=>string;
}
interface Foo2{
    foo():string;
}
var foo1:Foo1;
var foo2:Foo2;
foo1 = foo2 = foo1; 

行为的方式不同。要了解lambda函数的必要性()=>http://youtube.com/watch?v=tvocUcbCupA&hd=1