gpt4 book ai didi

TypeScript 接口(interface)模板

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:34 25 4
gpt4 key购买 nike

我不太确定使用 TypeScript 的正确术语。但我觉得我在重复自己,并希望更好地模板化我的界面,以免造成混淆。

我有一个 type,它基本上是一个潜在字符串的列表。然后,我在 interface 的键中使用了这些字符串。

这是我的文件:

import { IErrorResponse } from '~/interfaces'

export type PRODUCT_ACTION_KEYS =
| 'creatingProducts'
| 'fetchingCategories'
| 'fetchingProduct'
| 'fetchingProducts'

export interface IProductsReducer {
categories: any[]
error: {
creatingProduct?: IErrorResponse
fetchingCategories?: IErrorResponse
fetchingProduct?: IErrorResponse
fetchingProducts?: IErrorResponse
}
is: {
creatingProduct: boolean
fetchingCategories: boolean
fetchingProduct: boolean
fetchingProducts: boolean
}
products: any[]
selectedProduct?: any
}

我想得到这样的东西:

import { IErrorResponse } from '~/interfaces'

export type PRODUCT_ACTION_KEYS =
| 'creatingProducts'
| 'fetchingCategories'
| 'fetchingProduct'
| 'fetchingProducts'

export interface IProductsReducer {
categories: any[]
error: {
[PRODUCT_ACTION_KEYS]?: IErrorResponse
}
is: {
[PRODUCT_ACTION_KEYS]: boolean
}
products: any[]
selectedProduct?: any
}

在 TypeScript 中可以实现这样的功能吗?

谢谢!

最佳答案

是的,就是这样mapped types是为了

export interface IProductsReducer {
categories: any[]
error: {
[key in PRODUCT_ACTION_KEYS]?: IErrorResponse
}
is: {
[key in PRODUCT_ACTION_KEYS]: boolean
}
products: any[]
selectedProduct?: any
}

另一种获得相同类型的方法是使用内置的 Partial 和 Record 类型的组合:

 error: Partial<Record<PRODUCT_ACTION_KEYS, IErrorResponse>>

关于TypeScript 接口(interface)模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571922/

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