2017-08-10 74 views
3

是什麼在接口定義像函數之間的區別:打字稿:差異=>和:接口函數聲明

interface IMyInterface1 { 
    functionName(value: string): void; 
} 

interface IMyInterface2 { 
    functionName: (value: string) => void; 
} 
+0

[Function property vs method]的可能重複(https://stackoverflow.com/questions/39156315/function-property-vs-method) –

回答

4

有沒有真正的區別就在這裏,你可以使用哪一個你感覺更舒適。
有了這樣說,我考慮的第一個暗示一個類的方法,而第二個是它是一個功能的部件:

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

class MyClass2 implements IMyInterface2 { 
    functionName = function(value: string): void {} 
} 

這僅僅是一個個人喜好,編譯器將讓你做相反的好:

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

class MyClass2 implements IMyInterface2 { 
    functionName(value: string): void {} 
} 

以類似的方式,這兩個符號是相同的:

let obj1 = { 
    functionName() {} 
} 

let obj2 = { 
    functionName: function() {} 
} 

因爲它們都編譯爲:

var obj1 = { 
    functionName: function() { } 
}; 
var obj2 = { 
    functionName: function() { } 
};