function Foo(): string {}

表示Foo是返回string的函数。
interface SFC {
    (props: Props): any;
}

const Foo: SFC = p => {};

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

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

即我想使用function关键字(不是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");

10-07 23:55