在TypeScript接口上声明函数的多种方法:它们有何不同?
我见过以多种方式声明函数的属性,如此TypeScript界面上的在TypeScript接口上声明函数的多种方法:它们有何不同?,typescript,Typescript,我见过以多种方式声明函数的属性,如此TypeScript界面上的func1和func2所示: interface Thing { func: (arg:string) => number; func2(arg:string): number; } 这两者有区别吗?是否有一种情况下,你会使用一个而不是另一个 这似乎意味着两者可以互换使用。这有什么限制吗 这两者有区别吗 对 func:(arg:string)=>number 这个版本意味着它是一个属性。当您试图声明重载时,这
func1
和func2
所示:
interface Thing {
func: (arg:string) => number;
func2(arg:string): number;
}
这两者有区别吗?是否有一种情况下,你会使用一个而不是另一个
这似乎意味着两者可以互换使用。这有什么限制吗
这两者有区别吗
对
func:(arg:string)=>number代码>
这个版本意味着它是一个属性。当您试图声明重载时,这将限制您
func2(arg:string):数字代码>
这是函数的首选,因为这意味着您可以轻松地在事实发生后声明重载(使用接口的开放性)
这似乎意味着两者可以互换使用
这是因为它们是类型兼容的。并不意味着它们是同一件事。请参见下面的属性与方法:
例子
这应澄清:
interface Thing {
func: (arg: string) => number;
func2(arg:string): number;
}
interface Thing {
// Overload not permitted
func: (arg: number) => string; // ERROR!
// Overload okay
func2(arg: number): string;
}
我对这个问题的回答很好地回答了这个问题。