typescript - 具有动态属性的类型定义
问题描述
我得到这样的数据:
{
"_embedded": {
"Customers": [{ "CompanyName": "AWS" }]
}
}
另一个可能看起来像这样:
{
"_embedded": {
"Products": [{ "SKU": "ABC123" }]
}
}
所以除了里面的属性名外,它总是相同的结构_embedded
。
我想要实现的是创建一个 TypeScript 类型别名,如下所示:
type MyType<T> = {
_embedded: {
Customers: Array<T>
}
}
我可以使数组中使用的类型成为通用类型,但我不知道是否可以使_embedded
(Customer
此处)中的属性名称依赖于字符串值。
解决方案
这是我基于kaya3 评论的解决方案:
type MyType<T, K extends string> = {
_embedded: Record<K, T>
}
它可以这样使用:
const x: MyType<Array<Customer>>, 'customers'> = {
_embedded: { customers: [] }
}
推荐阅读
- laravel - Laravel:网站内未定义的变量帖子
- javascript - 重新渲染后视频 onEnd 触发两次
- php - 使用 mysqli_num_rows() 时没有回显
- react-native - 在 React Native 中上传视频时出错
- matlab - 如何在 MATLAB 中更改直线的角度?
- react-admin - 在 show/edit-URL 中使用 ID 而不是 IRI
- oracle - ORACLE PL/SQL 更新价格
- python - 有没有一种优雅的方法可以在没有 x 的情况下增加“arr”的索引?
- r - R编程:子集函数列标题以其原始格式不可用
- python - 创建一个新的 Dataframe 列,其中包含来自两个现有列的字典,每个列都包含列表