You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript Interface属性可用联合类型?与课程描述冲突存疑

关于TypeScript Interface与联合类型的疑问解答

你的理解存在一处小偏差,咱们拆解开说清楚:

  1. Interface的核心是定义对象的结构类型
    课程里说Interface用来定义“对象类型”是没错的,但这里的“对象类型”指的是整个interface描述的是一个对象的形状,而非要求interface里的每个属性都必须是对象类型。Interface的作用是约束对象的键和对应值的类型,属性值可以是任意合法的TypeScript类型——包括基本类型、联合类型、甚至另一个interface定义的对象类型。

  2. 联合类型完全可以作为Interface属性的类型
    比如你看到的React示例:

    interface Props {
      title: string | number;
      // 其他属性...
    }
    
    function MyComponent(props: Props) {
      return <div>{props.title}</div>;
    }
    

    这段代码完全合法,因为Props本身是一个对象类型(描述组件接收的props对象结构),而title属性用联合类型限定它可以是字符串或数字,这和Interface的定义逻辑并不冲突。

  3. 课程表述的补充说明
    课程说“string | number这类联合类型不属于对象类型”是正确的——联合类型本身是多个类型的集合,确实不是对象类型。但Interface是包裹这些属性的“容器”,整个容器属于对象类型,内部属性则可以用任意类型,包括联合类型。

简单总结:Interface负责定义对象的整体结构,对象内部的每个属性可以使用任意TypeScript类型,包括联合类型,两者并不矛盾。

内容的提问来源于stack exchange,提问作者Tun Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:55:56