在DefinitelyTyped库的@ types / React包中,我遇到了这个定义
interface FunctionComponent<P = {}> {
(props: PropsWithChildren<P>, context?: any): ReactElement | null;
propTypes?: WeakValidationMap<P>;
contextTypes?: ValidationMap<any>;
defaultProps?: Partial<P>;
displayName?: string;
}
我读到{}类型称为“空对象”类型,其目的是描述一个本身没有属性的对象。
有人可以解释为什么大多数通用函数将其用作默认类型吗?
答案 0 :(得分:1)
有人可以解释为什么大多数通用函数将其用作默认类型吗?
这是许多反应类型的默认设置,因为如果您未指定所需的道具,则会假定您不需要任何道具。当您没有任何道具时,您的组件仍会收到一个道具对象,该对象上将没有任何属性,因此为空对象。
答案 1 :(得分:0)
在TypeScript 3.5之前,无法推断的每种类型都默认为{}
。从那时起,它默认为unknown
。这就是为什么在许多旧版代码中,您会看到{}
而不是unknown
的用法。
请注意,两者之间存在区别:{}
不能为null
,而unknown
可以为