TypeScript中这两个变量的类型之间的形式差异是什么?
var randomStringId = () => Math.random().toString(36).substr(2, 9);
function randomStringId2() {
return Math.random().toString(36).substr(2, 9);
}
randomStringId
的类型为() => string
。 randomStringId2
的类型为(): string
。他们不一样吗?如果有,怎么样?或者只是我的IDE显示两种基本相同的类型?
答案 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