我想知道foo
和bar
之间的区别在于以下界面:
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 :(得分:0)
它们都是等价的。第一个(foo( value: number): string;
)只是第二个(foo: ( value: number ) => string;
)的语法糖。如果您想要定义高级函数,这非常有用:
function test(myFunction: (value: number) => string)