当前位置: 首页 > 知识库问答 >
问题:

前端 - 如何设计对象的属性类型通过其他属性类型来动态获取?

韩安顺
2023-12-04

我想设计一个这样的 TS 类型,但是不知道该如何设计,就是一个数组类型,数组的每一项都是一个对象,对象有两个属性,第一个属性是 就像这样使用React 组件,第二个对象是需要传递给该组件的属性,希望可以保持有 TS 的类型检查应该如何设计,
使用时就像这样
image.png

之前这么设计过这个类型,数组中只传入一项没有问题,但是假如传入多项就会有类型不匹配

interface IProps<T> {    registryModal:Array<{        Component:React.ComponentType<T>,        props:T    }>}

共有1个答案

倪振海
2023-12-04

你在IProps上约束了所有的props的类型都是T,数组中所有的元素都得是这个类型才行。

这种声明方式我只能想到用any解决:

interface IProps {    registryModal:Array<{        Component:React.ComponentType<any>,        props: any    }>}

在你使用每一个组件时再用as声明props的真正类型。

 类似资料:
  • 问题内容: 我已经编写了一个枚举类,我想按类型获取属性或按属性获取类型,但这似乎是不可能的。 上面的代码将无法编译。如何上班? 问题答案: 您需要做的就是添加一个默认情况,以便该方法始终返回某些内容或引发异常: 也许更好

  • 我正在尝试获取一些类属性的类型,以便强烈键入我的静态编程语言代码。在打字稿中,我们可以这样做(愚蠢的例子,但这是为了解释) 这样做的好处是,如果我需要更改“_prop”的类型,不需要重构整个代码,因为类型是通过< code>Test["_prop"]找到的。在科特林有办法做到这一点吗? 我在Kotlin中见过反射函数,但无法得到我想要的 科特林代码:

  • 在 PowerShell 中,如何通过指定对象的名称(字符串)来获取对象的属性值?我想要类似这样的东西: 是否有类似于“获取属性名称”的内容?

  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 英文原文:http://emberjs.com/guides/object-model/computed-properties/ 什么是计算属性? 简单地来说,计算属性就是将函数声明为属性。通过定义一个如同函数一般的计算属性,Ember将会自动调用该函数来获取计算属性的值,此后就可以如同使用普通静态属性一样来使用计算属性。 在需要使用一个或者多个属性的变形,或者手动修改其数据的时候非常有用。 计算

  • 获取'NoneType'对象没有'send'属性我该怎么做?这个错误让我头晕