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
相关产品推荐
相关产品推荐

