18910140161

我有一个对泛型组件的需求,不知该如何实现

顺晟科技

2022-09-03 12:13:51

44

以上两张图不知是否表达清楚.


顺晟科技:

不知道你到底想干些什么,这些操作不都是多此一举么?

defineComponent是已定义的函数,怎么加模板类型,PropType本来就是约束

不不不.不是这样的. 你现在的这个答案是指明 在 本组件内部可以使用泛型.我的要求是在外部使用泛型.而你上一条回答 则是 将 每一个需要用到的 props都做手动的限制. 而我图1 中的例子想达到的目的则是 keyof T 而非 固定的 “a”|“b”; “a” | “b” 是通过T进行推导出来的. 因为T是不固定的类型.例如: element-ui 中的表格 的 一些事件 或 方法中传递过来的参数 就是 row, column, cell, 并不能确定row 与 所传递进去的 data的关系. 我所想要达到的目的则是 这个row 就应该 是 data数组的其中一个成员类型的提示,而非直接是 object或any

element-plus 中使用的方法(目的是让父子组件状态数据传递使用 MenuProvider)

你图2要的效果我上条回答就已经回答了

组件的 props 不会支持泛型,支持了也没有意义。

介绍软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。这样用户就可以以自己的数据类型来使用组件。泛型之Hello...

防沉自顶。希望来位大佬解答一下

是的,就目前来说,搜索过很多地方,都没有发现props该怎么支持泛型。希望vue能够尽早支持。

vue的props,似乎不支持T。唯一沾边的方法是 K extends keyof T,当然这个也不行。需要 vue 提供支持。

另外,你想一想呀,加载组件的时候,如何传入一个 泛型进去?或者设置组件的属性的时候,传入一个泛型?

目前来说,好像没办法实现。有没有什么好的思路进行绕过去呢?看过defineComponent的声明文件,太过庞杂了。以目前我的能力,想不到什么绕过的方法。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航