首页 > 解决方案 > 创建具有未知类型的可选未知属性的接口

问题描述

interface Example {
    value?: string
    [prop: string]: any
}

const xxx: Example = { name: 'Thomas' }

const v = xxx.name

在此处添加“any”实际上会删除推断的名称上的“字符串”类型,否则如果xxx未分配给示例,则该类型将存在。

有没有办法让接口或类型通过推断类型?

标签: typescript

解决方案


您可以使用带有联合的泛型类型:

type WithName<T> = T & { name?: string };
const myThing: WithName<{ foo?: string; bar?: number }> = { name: 'sup'};

推荐阅读