打字稿:接口函数声明中=>和:之间的区别

Nic*_*ick 8 typescript

在界面中定义函数有什么区别:

interface IMyInterface1 {
    functionName(value: string): void;
}
Run Code Online (Sandbox Code Playgroud)

和

interface IMyInterface2 {
    functionName: (value: string) => void;
}
Run Code Online (Sandbox Code Playgroud)

Nit*_*mer 8

这里没有真正的区别,你可以使用哪种感觉更舒适.
话虽如此,我认为第一个暗示一个类方法,而第二个是一个函数的成员:

class MyClass1 implements IMyInterface1 {
    functionName(value: string): void {}
}

class MyClass2 implements IMyInterface2 {
    functionName = function(value: string): void {}
}
Run Code Online (Sandbox Code Playgroud)

这只是个人偏好,编译器也会让你做相反的事情:

class MyClass1 implements IMyInterface1 {
    functionName = function(value: string): void {}
}

class MyClass2 implements IMyInterface2 {
    functionName(value: string): void {}
}
Run Code Online (Sandbox Code Playgroud)

以类似的方式,这两个符号是相同的:

let obj1 = {
    functionName() {}
}

let obj2 = {
    functionName: function() {}
}
Run Code Online (Sandbox Code Playgroud)

因为它们都被编译为:

var obj1 = {
    functionName: function () { }
};
var obj2 = {
    functionName: function () { }
};
Run Code Online (Sandbox Code Playgroud)