我想定义一个像表<t>
这样的通用类,其中T是表将要绑定到的数据结构的接口。
因此该类将具有键入返回Promise <t>
的函数。
但是我还需要能够传递道具,带有标签的列列表,它们是否可排序等。
此列列表需要与<t>
的定义紧密结合
即如果我对<t>
的定义是
{
id: string,
description: string,
createdDate: Date
}
然后,需要放入的列的列表必须是3列的列表,并且每个列的键分别为id
,description
和createdDate
。
如何使用Typescript和T定义该列列表,以便如果您发送的列与T的定义不匹配,则编译将失败。
谢谢
答案 0 :(得分:2)
最简单的解决方案是不使用列表。对象文字是一个更好的选择,因为它已经检查没有重复发生,并且映射的类型可以轻松地用于基于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" },
})
我们也可以使用列表来完成此操作,但是只是开始看看有什么问题。我们可能需要一个静态方法来创建表,因为我们需要额外的类型参数来获取列列表的类型。
代码完成也可能会更好地与对象字面量解决方案一起使用,这对开发人员的经验很重要。