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

Flow type中type {}与{||}的区别是什么?

Flow中type {}与{||}的核心区别

1. 类型匹配范围

  • type {}:是Flow中最宽泛的对象类型,所有对象(无论包含多少自有属性)都能匹配它,它代表“任意对象”而非“空对象”:
    const obj1: {} = { name: "Alice" }; // 合法,带属性的对象属于{}的子类型
    const obj2: {} = {}; // 合法
    const obj3: {} = Object.create(null); // 合法
    
  • {||}:是精确空对象类型,仅匹配无任何自有可枚举属性的对象,带额外属性的对象会触发类型错误:
    const obj1: {||} = {}; // 合法
    const obj2: {||} = { name: "Alice" }; // 报错:对象包含未声明的属性`name`
    const obj3: {||} = Object.create(null); // 合法(无自有属性)
    

2. 设计用途

  • type {}:用于“只要求是对象,不关心具体结构”的场景,比如函数参数接受任意对象时使用。
  • {||}:用于严格限制对象必须为空,不允许添加任何额外自有属性的场景。

3. 语法本质

{||}是Flow精确对象类型的空形式(精确类型语法为{| key: Type |},强制对象仅含声明属性);而type {}是开放的对象超类型,和精确类型规则无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:00:08