使用随机数组字符串键入对象键/属性 - TypeScript

Posted

技术标签:

【中文标题】使用随机数组字符串键入对象键/属性 - TypeScript【英文标题】:Using random array strings to type object keys/properties - TypeScript 【发布时间】:2020-09-05 17:17:00 【问题描述】:

我想要一个动态的Array<string>,然后用数组值中的key/property 生成一个动态的Object。 (用于 reactjs 打字稿中的道具使用)

这是一个示例代码:

interface Props 
  buttons: Array<string>;
  buttonProps?:  [key: string]: string ; //want key here to correspond with values of buttons

我猜你在这里使用泛型,但我不确定如何继续。

【问题讨论】:

【参考方案1】:

因为 key 是 string 你必须添加一个泛型,否则任何字符串都是有效的,这意味着你可以在按钮和 buttonProps 中放置任何东西。

我希望我的问题是正确的。

interface Props<T extends keyof any = keyof any> 
  buttons: Array<T>;
  buttonProps?:  [key in T]: string ;
;

const buttons: Props<'test1' | 'test2'> = 
  buttons: [
    'test1', 'test2',
  ],
  buttonProps: 
    test1: 'string1',
    test2: 'string2',
  ,
;

【讨论】:

只是一个后续,如果它是一个无状态的反应组件,我想在其他地方定义buttons,我该如何处理? 你需要一个定义所有按钮的类型,比如type allButtons = 'test1' | 'test2',然后你可以在任何你定义按钮的地方使用这个类型,你也可以将它传递给Props 太棒了!编码愉快!

以上是关于使用随机数组字符串键入对象键/属性 - TypeScript的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Typescript 在 mongoose 中正确键入对象 ID 数组

如何使用 Prop-Types 强制数组形状和大小?

通过键字符串从对象数组中删除属性

循环访问核心数据对象数组时随机访问日期类型属性失败

C#如何将变量用作键值字符串数组的对象列表对象构造函数中的属性名称

如何在php laravel中将数组键转换为随机字符串