gpt4 book ai didi

javascript - 使用 Flow 限制对象值

转载 作者:行者123 更新时间:2023-11-30 09:33:12 28 4
gpt4 key购买 nike

有没有什么方法可以在 Flow 中键入一个对象,使其可以具有任意数量的键,但可以键入这些键的值。

即一种强制对象中的所有值都是字符串的类型

const validObject = {
foo: 'bar',
bar: 'baz'
}

const invalidObject = {
foo: 1,
bar: 'baz'
}

无效对象将失败,因为它有一个数字作为键之一。

最佳答案

如果您不知道对象的确切形状,但知道它从 string -> string 映射,那么您可以使用字典类型:

type Valid = {[key:string]: string}

const validObject: Valid = {
foo: 'bar',
bar: 'baz'
}

const invalidObject: Valid = {
foo: 1, // error
bar: 'baz'
}

如果你知道你的对象的形状,你可以这样定义一个类型

type Valid = {
foo: string,
bar: string
}

const validObject: Valid = {
foo: 'bar',
bar: 'baz'
}

const invalidObject: Valid = {
foo: 1, // error
bar: 'baz'
}

此外,您可以使用 {| 来使用称为“汉堡包语法”的东西|} 使类型成为只允许 foobar 有效的 exact 类型。 ( Read more here )

// @flow

type Valid = {|
foo: string,
bar: string
|}

const validObject: Valid = {
foo: 'bar',
bar: 'baz',
baz: 'foo' // error
}

关于javascript - 使用 Flow 限制对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45064738/

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