Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在TypeScript接口上声明函数的多种方法:它们有何不同?_Typescript - Fatal编程技术网

在TypeScript接口上声明函数的多种方法:它们有何不同?

在TypeScript接口上声明函数的多种方法:它们有何不同?,typescript,Typescript,我见过以多种方式声明函数的属性,如此TypeScript界面上的func1和func2所示: interface Thing { func: (arg:string) => number; func2(arg:string): number; } 这两者有区别吗?是否有一种情况下,你会使用一个而不是另一个 这似乎意味着两者可以互换使用。这有什么限制吗 这两者有区别吗 对 func:(arg:string)=>number 这个版本意味着它是一个属性。当您试图声明重载时,这

我见过以多种方式声明函数的属性,如此TypeScript界面上的
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;
}
我对这个问题的回答很好地回答了这个问题。