如何定义命名函数的类型?

时间:2017-08-03 00:24:52

标签: typescript syntax

function Foo(): string {}

表示Foo是一个返回string的函数。

interface SFC {
    (props: Props): any;
}

const Foo: SFC = p => {};

表示Foo是与签名SFCp匹配的匿名函数,类型为Props

如何声明与function Foo()匹配的SFC?语法是什么?

即,我想使用function关键字(而不是const)声明一个函数,而函数本身的类型为SFC

这些不能工作:

function Foo: SFC () {}
function Foo() {}: SFC

2 个答案:

答案 0 :(得分:1)

TypeScript使用duck typing,因此Foo函数的结构匹配时类型为SFC

interface SFC {
    (props: any): any;
}

function Foo(props: any): any {
    console.log(props);
}

let sfc: SFC = Foo; // Foo is of type SFC.
sfc("Foo");

答案 1 :(得分:0)

  

我想使用function关键字(不是const)声明一个函数,函数本身是SFC类型。

你做不到。你不应该,因为const为你提供了所需的一切。

name属性

好的浏览器会为您添加,例如铬。

enter image description here