function Foo(): string {}
表示Foo
是一个返回string
的函数。
interface SFC {
(props: Props): any;
}
const Foo: SFC = p => {};
意味着Foo
是一个匹配签名SFC
的匿名函数,p
的类型为Props
。
如何声明与SFC
匹配的function Foo()
?语法是什么?
也就是说,我想使用function
关键字(而不是const
)声明一个函数,并且该函数本身的类型为SFC
。
这些不起作用:
function Foo: SFC () {}
function Foo() {}: SFC
3条答案
按热度按时间dldeef671#
有许多TypeScript提案用于显式键入声明为命名的提升函数(而不是表达式)的函数。这些建议都还没有得到执行。#22063似乎是最活跃的。
*#22063:建议:函数声明的类型注解和接口
const C: React.FC<Props> = (props0) => ...
)TypeScript 4.9中
satisfies
关键字(#47920,#46827)的发布是相关的,但仅适用于表达式;它不改变函数定义。开放问题#51556声称在#47920上使用satisfies
进行功能跟踪,而#52195被欺骗了。vc9ivgsu2#
TypeScript使用duck typing,因此如果
Foo
函数的结构匹配,则其类型为SFC
。a11xaf1n3#
我想使用function关键字(不是const)声明一个函数,并且函数本身是SFC类型。
你不能。你也不应该这么做,因为
const
给了你所需要的一切。name
属性好的浏览器会为您添加这些内容,例如。 chrome 。