2017-05-30 22 views
0

としてIがfoobarとの間の差は、次のインターフェイスであるか疑問だプロパティの違い:機能および方法

interface Test 
{ 
    foo(value: number): string; 
    bar: (value: number) => string; 
} 


let x: Test = { 
    foo: (i) => "", 
    bar: (i) => "", 
}; 

私の明白な第二の特性であるのに対し、第つの方法であることが、それ以外は意味的に同じですか?

編集:

これは完全に同等ではないようです。少なくともコンストラクタメソッドnowでは、最初の構文のみが有効であるようです。

class Test 
{ 
} 

interface TestConstructor 
{ 
    new(): Test; 
} 

const activator = function(type: TestConstructor) 
{ 
    return new type(); // fine 
} 

interface TestConstructor2 
{ 
    new:() => Test; 
} 

const activator2 = function(type: TestConstructor2) 
{ 
    return new type(); // Error: Cannot use 'new' with an expression whose type lacks a call or construct signature. 
} 

答えて

0

これらはどちらも同等です。最初のもの(foo(value: number): string;)は、2番目の文法的な砂糖(foo: (value: number) => string;)のみです。

function test(myFunction: (value: number) => string)

+0

しかし、それは '' 'new'''keywordに来るとき、あなたはでEDIT部分を参照してください(違いを説明することができますあなたのような高レベルの関数を定義したい場合に便利です上記の質問)? –

関連する問題