gpt4 book ai didi

typescript - 强制对象至少有一个键( Object.keys(o).length > 0 )

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:52 25 4
gpt4 key购买 nike

假设我有这个对象

export interface Name {
[key: string]: boolean
}

const v = <Name>{};

如何防止编译?我想做的是强制 v 至少有一个属性:

const v = <Name>{foo: true};

最佳答案

您不能对变量执行此操作。首先,您不能同时推断变量的类型并为其添加注释。默认情况下,您添加的任何注释都不能限制至少一个任意属性的存在。

如果你有一个函数,并且你想确保函数参数至少有一个属性,我们可以使用条件类型来生成类似于自定义错误的东西:

function noEmpty<T>(o: T & (keyof T extends never ? "No empty object" : {})) {

}

noEmpty({}) // err Argument of type '{}' is not assignable to parameter of type '{} & "No empty object"'.
noEmpty({ a: ""})

关于typescript - 强制对象至少有一个键( Object.keys(o).length > 0 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52173915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com