属性作为函数和方法的区别

时间:2017-05-30 11:08:05

标签: typescript interface

我想知道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.
}

1 个答案:

答案 0 :(得分:0)

它们都是等价的。第一个(foo( value: number): string;)只是第二个(foo: ( value: number ) => string;)的语法糖。如果您想要定义高级函数,这非常有用:

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