Javascript typescript泛型定义依赖项

Javascript typescript泛型定义依赖项,javascript,reactjs,typescript,generics,Javascript,Reactjs,Typescript,Generics,我想定义一个像Table这样的泛型类,其中T是表将绑定到的数据结构的接口 因此,该类将有一个函数,该函数被键入以返回承诺 但我还需要能够作为道具传递,一个列列表及其标签,它们是否可排序等等 此列列表需要与 i、 e.如果我对的定义是 { id: string, description: string, createdDate: Date } 然后,需要输入的列列表必须是一个包含3列的列表,其中每个列的键分别为id、description和createdDate 如何使用Typ

我想定义一个像Table
这样的泛型类,其中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