我如何为已展平的嵌套对象生成类型?

问题描述 投票:4回答:1

我正在尝试使用带有这样的嵌套对象的类型:

type Numbers = {
  numberOfCategories: number,
  colors: {
    numberOfColors: number
  },
  cars: {
    numberOfCars: number
  }
}

并自动生成一个扁平化的类型,看起来像这样:

type FlattedNumbers = {
  numberOfCategories: number,
  numberOfColors: number
  numberOfCars: number
}

我以为这样的方法可以解决问题,但是它没有按我预期的那样工作:

type Numbers = {
  numberOfCategories: number,
  colors: {
    numberOfColors: number
  },
  cars: {
    numberOfCars: number
  }
}

type ConvertToObjects =
    & (<K, V:Object> (K, V) => V)
    & (<K, V> (K, V) => { K: V })


type Flattened = { ...$Values<$ObjMapi<Numbers, ConvertToObjects>> };

let test = ({
      numberOfCategories: 2,
      numberOfColors: 5,
      numberOfCars: 10
}: Flattened)

我收到以下错误消息:

// 15: type Flattened = { ...$Values<$ObjMapi<Numbers, ConvertToObjects>> };
//                                   ^ number [1] is not an object.
// References:
// 2:   numberOfCategories: number,
//                          ^ [1]

我的目标是使等效的Flattened功能正常工作。

我从这里开始玩:flow playground

javascript flowtype
1个回答
0
投票
此问题似乎已在a recent commit中修复,自您发布此问题以来,它已作为Flow v0.111.1中的错误修复发布。您的游乐场链接在最新版本上未显示任何错误,但在使用v0.111.1时仍会出现。
© www.soinside.com 2019 - 2024. All rights reserved.