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

function Foo(): string {}

意味着Foo是一个返回字符串的函数.

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

const Foo: SFC = p => {};

意味着Foo是与签名SFC匹配的匿名函数,p是Props类型.

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

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

这些不起作用:

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

最佳答案 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");
点赞