流程:生成对象类型" Y"来自对象类型" X"在哪里" Y"具有与" X"相同的所有键,但所有类型都是字符串

时间:2017-07-31 23:18:07

标签: javascript flowtype

让我们说我们有一个类型:

type X = {|
  a: number,
  b: number,
|}

我想创建一个类型为

Y类型
type Y = {|
  a: string,
  b: string,
|}

我认为$ObjMap可能有可能,尽管它目前被认为是不稳定的,但是

type X = {|
  a: number,
  b: number
|}
type Y = $ObjMap<X, any => string>
const y: Y = {
  a: 1,
  b: 1,
  c: 1
}

不会产生流量错误。任何替代方案?

1 个答案:

答案 0 :(得分:1)

根据this comment in issue 2674$ObjMap目前允许无效写入和文字分配。我相信这种情况属于后一个问题。

你可以尝试一下这样的止损解决方案:

type X = {|
  a: number,
  b: number
|}
type Y = { [$Keys<X>]: string };
const y: Y = {
  a: 1,
  b: 1,
  c: 1
}

这会捕获额外的密钥c以及无效的number值,但它不会警告您缺少密钥。