【问题标题】:What is the purpose of the empty object type {} in typescript?打字稿中空对象类型 {} 的目的是什么?
【发布时间】:2020-04-02 15:54:56
【问题描述】:

DefinitelyTyped 库的@types/React 包中我遇到了这个定义

interface FunctionComponent<P = {}> {
        (props: PropsWithChildren<P>, context?: any): ReactElement | null;
        propTypes?: WeakValidationMap<P>;
        contextTypes?: ValidationMap<any>;
        defaultProps?: Partial<P>;
        displayName?: string;
    }

我读到 {} 类型被称为 Empty Object 类型,其目的是描述一个没有自身属性的对象。

有人可以解释为什么它被用作大多数通用函数的默认类型吗?

【问题讨论】:

标签: typescript


【解决方案1】:

有人可以解释为什么它被用作大多数通用函数的默认类型吗?

这是许多反应类型的默认设置,因为如果您不指定所需的道具,则假定您不想要任何道具。当您没有任何 props 时,您的组件仍会收到一个 props 对象,该对象将没有任何属性,因此是一个空对象。

【讨论】:

    【解决方案2】:

    在 TypeScript 3.5 之前,所有无法推断的类型都默认为 {}。从那时起,它默认为unknown。这就是为什么在很多遗留代码中你会看到使用{} 而不是unknown

    请注意,两者之间存在区别:{} 不能是 null,而 unknown 可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2016-11-06
      • 2022-01-19
      • 2019-01-26
      • 1970-01-01
      • 2020-10-11
      • 2020-05-25
      相关资源
      最近更新 更多