gpt4 book ai didi

javascript - typescript 泛型定义依赖

转载 作者:行者123 更新时间:2023-11-30 14:22:35 25 4
gpt4 key购买 nike

我想定义一个泛型类,如 Table <t>其中 T 是表将绑定(bind)到的数据结构的接口(interface)。

因此该类将有一个类型为返回 Promise <t> 的函数.

但我还需要能够作为 props 传入,带有标签的列列表,它们是否可排序等。

此列列表需要与 <t> 的定义紧密耦合即,如果我对 <t> 的定义是

{
id: string,
description: string,
createdDate: Date
}

然后需要放入的列的列表必须是 3 列的列表,每列的键都是 id , descriptioncreatedDate分别。

我如何使用 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" },
})

我们也可以用列表来做,但只是开始查看问题所在。我们可能需要一个静态方法来创建表,因为我们需要额外的类型参数来获取列列表的类型。

此外,代码完成可能会更好地与对象文字解决方案一起工作,这对开发体验很重要。

关于javascript - typescript 泛型定义依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com