【问题标题】:How to create a Typescript declaration from object to an array of arrays如何创建从对象到数组数组的 Typescript 声明
【发布时间】:2022-08-20 01:40:37
【问题描述】:

我有以下对象:

myObj = [ [ x, y, z ], [ k, l ], [ i ] ]

xyk 和所有其他的值可以是来自其他对象的任何值:

options = { A: \'red\', B: \'green\', C: \'blue\' }

如何声明myObj的类型?所以我可以得到这个:

type MyType = ???
myObj: MyType = [ [ ...

很难弄清楚这一点。

感谢您的关注!!!

编辑: Codepen

  • 您的意思是 x、y、z 等可以取值 redgreenblue 吗?
  • myObj 中的所有元素都是类型选项吗?
  • 请提供一个独立的minimal reproducible example,其他人可以将其粘贴到独立的 IDE 中,以自己演示您的问题。现在我不得不猜测并重新创建xyz 等,只是为了到达我可以开始工作的部分
  • 你的意思是 x、y、z 等可以取值 red、green 和 blue 吗?是的,但他们只会收到来自options.Aoptions.B 等的值myObj 中的所有元素都是类型选项吗?myObj 中的所有元素都将接收任何选项的值,例如:myObj[1][2] = options.A

标签: javascript typescript types


【解决方案1】:
type Color = ('red'|'green'|'blue')
type MyType = [[Color,Color,Color],[Color,Color],[Color]]
const myObj: MyType = [['red','red','red'],['red','red'],['red']]

【讨论】:

  • 我不确定子数组的长度...所以:type MyType = Color[][] ...对吗?
  • type Color 也不是来自 options 上的值
  • 请提供 myObj 的示例。是x = { A: 'red', B: 'green', C: 'blue' }?或者是x = 'red'
  • 第二种选择,x = 'red'
【解决方案2】:
type MyType = ('red'|'green'|'blue')[][]
const options = { A: 'red', B: 'green', C: 'blue' };

const myObj: MyType = [
  [
    options.A,
    options.C,
    options.B
  ],
  [ 'red', 'green' ],
  [ options.C ]
];

【讨论】:

  • 'red'|'green'|'blue' 如何成为 options 中的值之一? options 应该是一个枚举,如果是这样,如何使 myObj 被这些值验证?
猜你喜欢
  • 1970-01-01
  • 2018-04-18
  • 2019-12-02
  • 2014-12-12
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
相关资源
最近更新 更多