是否可以在TypeScript上创建一个对象接口以允许灵活的数字键类型?

rockon_d

在为React组件创建主题时,我想知道定义对象类型的最佳方法是什么。基本上,我有一个react组件,它接受一个样式对象来创建主题。如下面:

const datePickerTheme = {
    palette: {
        primary: "#f5f5f5",
        secondary: "#2b4450",
        tertiary: "#871111"
    },
    spacing: ["0px", "4px", "8px", "16px", "32px", "64px"],
};

它将被传递到datepicker组件中,如下所示:

<DatePicker theme={datePickerTheme}/>

在类型脚本上,它具有如下所示的接口:

interface ITheme {
  palette: {
    primary: string,
    secondary?: string,
    tertiary?: string,
  },
  spacing: [],
}

但是,我希望为将来的主题自定义打开界面,以实现其他可能性。基本上,一个人应该能够传递任何种类的主题,但是需要许多键。有没有一种方法可以定义接口,以便在不使用类型“ theme:any”的情况下灵活开放。

约翰

这是你想要的吗?您可以在palette对象中添加任何键

interface ITheme {
  palette: {
    primary: string,
    secondary: string,
    tertiary: string,
    [key: string]: string
  },
  spacing: [],
}

或者,您可以通过提供来限制key的值type

type PaletteKey = 'third' | 'fourth';

interface ITheme {
  palette: {
    primary: string,
    secondary: string,
    tertiary: string,
    [key: PaletteKey]: string
  },
  spacing: [],
}

已编辑

对于将来基于的自定义ITheme,您可以扩展界面。

例如:

interface IPalette {
  primary: string;
  secondary: string;
  tertiary: string;
}

interface ITheme {
  palette: IPalette;
  spacing: [];
}

type Breakpoints = {
  xs: number;
  sm: number;
  md: number;
  lg: number;
  xl: number;
};

interface CustomTheme extends ITheme {
  palette: IPalette & {
    error: string;
    success: string;
  };
  breakpoints: Breakpoints;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在TypeScript上创建一个对象接口以允许灵活的数字键类型?

来自分类Dev

可以选择一个对象的限制数字键

来自分类Dev

排序基于一个未知的数字键的对象列表

来自分类Dev

是否有UITextField键盘类型像数字键盘但允许负数?

来自分类Dev

是否可以控制iPad上字母和数字键盘的切换?

来自分类Dev

是否可以创建一个未指定方法返回类型的接口?

来自分类Dev

是否可以创建一个继承类型的所有属性的类或接口

来自分类Dev

是否可以从“ n”个定义的接口中扩展出来并在TypeScript中创建一个新的子接口?

来自分类Dev

是否可以从TypeScript接口创建“空”对象?

来自分类Dev

我可以在Typescript中创建一个实现接口的类,并且仍然可以在其上使用装饰器吗?

来自分类Dev

遍历嵌套的数字键json对象

来自分类Dev

如何在 Regrex(正则表达式)上允许数字键盘?

来自分类Dev

如何创建一个类型函数来检查TypeScript中的类型是否为空对象?

来自分类Dev

是否可以从JSON创建一个Parse对象

来自分类Dev

是否可以在TypeScript中创建类型或接口为带有正好“ n”个条目的Array?

来自分类Dev

Emacs:是否可以为缓冲区分配数字键kb快捷方式?

来自分类Dev

是否可以为 Messenger 平台显示数字键盘?

来自分类Dev

Typescript接口类型映射到一个对象,该对象包含一个原始对象和一个从原始对象的字段构建的新对象

来自分类Dev

是否有一个“ if语句”,仅允许显示特定类型的数字?

来自分类Dev

在 iPad 上只能像 iPhone 一样显示数字键盘是可能的吗?

来自分类Dev

是否可以创建一个消息扩展名,以允许上传图片和提及用户?

来自分类Dev

使用数字键在对象中搜索值

来自分类Dev

如何通过对象的数字键反转Angular ngRepeat的顺序

来自分类Dev

如何使用JavaScriptSerializer使用数字键解析JSON对象

来自分类Dev

处理带有未知数字键的对象

来自分类Dev

删除由PHP创建的数字键未设置

来自分类Dev

输入特殊字符的方式?Alt +数字键是否可能?

来自分类Dev

输入特殊字符的方式?Alt +数字键是否可能?

来自分类Dev

tkSimpledialog 在移位的数字键上记录错误的符号

Related 相关文章

  1. 1

    是否可以在TypeScript上创建一个对象接口以允许灵活的数字键类型?

  2. 2

    可以选择一个对象的限制数字键

  3. 3

    排序基于一个未知的数字键的对象列表

  4. 4

    是否有UITextField键盘类型像数字键盘但允许负数?

  5. 5

    是否可以控制iPad上字母和数字键盘的切换?

  6. 6

    是否可以创建一个未指定方法返回类型的接口?

  7. 7

    是否可以创建一个继承类型的所有属性的类或接口

  8. 8

    是否可以从“ n”个定义的接口中扩展出来并在TypeScript中创建一个新的子接口?

  9. 9

    是否可以从TypeScript接口创建“空”对象?

  10. 10

    我可以在Typescript中创建一个实现接口的类,并且仍然可以在其上使用装饰器吗?

  11. 11

    遍历嵌套的数字键json对象

  12. 12

    如何在 Regrex(正则表达式)上允许数字键盘?

  13. 13

    如何创建一个类型函数来检查TypeScript中的类型是否为空对象?

  14. 14

    是否可以从JSON创建一个Parse对象

  15. 15

    是否可以在TypeScript中创建类型或接口为带有正好“ n”个条目的Array?

  16. 16

    Emacs:是否可以为缓冲区分配数字键kb快捷方式?

  17. 17

    是否可以为 Messenger 平台显示数字键盘?

  18. 18

    Typescript接口类型映射到一个对象,该对象包含一个原始对象和一个从原始对象的字段构建的新对象

  19. 19

    是否有一个“ if语句”,仅允许显示特定类型的数字?

  20. 20

    在 iPad 上只能像 iPhone 一样显示数字键盘是可能的吗?

  21. 21

    是否可以创建一个消息扩展名,以允许上传图片和提及用户?

  22. 22

    使用数字键在对象中搜索值

  23. 23

    如何通过对象的数字键反转Angular ngRepeat的顺序

  24. 24

    如何使用JavaScriptSerializer使用数字键解析JSON对象

  25. 25

    处理带有未知数字键的对象

  26. 26

    删除由PHP创建的数字键未设置

  27. 27

    输入特殊字符的方式?Alt +数字键是否可能?

  28. 28

    输入特殊字符的方式?Alt +数字键是否可能?

  29. 29

    tkSimpledialog 在移位的数字键上记录错误的符号

热门标签

归档