Javascript typescript泛型定义依赖项
我想定义一个像TableJavascript typescript泛型定义依赖项,javascript,reactjs,typescript,generics,Javascript,Reactjs,Typescript,Generics,我想定义一个像Table这样的泛型类,其中T是表将绑定到的数据结构的接口 因此,该类将有一个函数,该函数被键入以返回承诺 但我还需要能够作为道具传递,一个列列表及其标签,它们是否可排序等等 此列列表需要与 i、 e.如果我对的定义是 { id: string, description: string, createdDate: Date } 然后,需要输入的列列表必须是一个包含3列的列表,其中每个列的键分别为id、description和createdDate 如何使用Typ
这样的泛型类,其中T是表将绑定到的数据结构的接口
因此,该类将有一个函数,该函数被键入以返回承诺
但我还需要能够作为道具传递,一个列列表及其标签,它们是否可排序等等
此列列表需要与
i、 e.如果我对
的定义是
{
id: string,
description: string,
createdDate: Date
}
然后,需要输入的列列表必须是一个包含3列的列表,其中每个列的键分别为id
、description
和createdDate
如何使用Typescript和T定义列列表,以便如果发送的列与T的定义不匹配,则编译失败
谢谢最简单的解决方案是不使用列表。对象文字是一个更好的选择,因为它已经检查没有重复出现,映射类型可以轻松地用于创建基于
T
的新类型,该类型将具有相同的键,但具有不同的类型:
interface Columns {
id: string,
description: string,
createdDate: Date
}
interface IColumnDescription {
name: string;
// other props
}
class Table<T> {
constructor(columns: Record<keyof T, IColumnDescription>) {
}
}
new Table<Columns>({
createdDate: { name: "Created Date" },
description: { name: "Description" },
id: { name: "Id" },
})
接口列{
id:string,
描述:字符串,
createdDate:日期
}
接口IColumnDescription{
名称:字符串;
//其他道具
}
类表{
构造函数(列:记录){
}
}
新桌子({
createdDate:{name:“创建日期”},
描述:{name:“描述”},
id:{name:“id”},
})
我们也可以用一个列表来做这件事,但只是开始看看问题是如何出现的。我们可能需要一个静态方法来创建表,因为我们需要额外的类型参数来获取列列表的类型
此外,使用对象文字解决方案可能会更好地完成代码,这对开发人员的体验很重要。noce one,我将尝试一下。看起来不错-谢谢你的及时回复。这很好用。我可以在IColumnDescription中添加一个字段,即“Visible”或“Bindable”,但如果我只想在“columns”中使用T键作为可选项,那该怎么办?i、 e.我的object literal只能包含T的属性,但不必包含所有属性?@user2047485我想您正在查找
Partial