typescript - 如何正确键入更改对象值的函数
问题描述
我在打字方面没有太多经验,所以有时会出现这样的问题。如何正确键入为对象 const 的值添加后缀并返回的函数
export const POSTFIX = '_postfix';
export const WITHOUT_POSTFIX_VALUES = {
PRODUCT: 'product',
ORDER: 'order',
PERSON: 'person',
} as const;
export const addPostfixToValues = (obj: object) => Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, `${v}${POSTFIX}`]));
export const WITH_POSTFIX = addPostfixToValues(WITHOUT_POSTFIX_VALUES);
这是codesandbox的链接https://codesandbox.io/s/qsoe7
我想获得具有只读字段但添加了后缀的相同对象。提前感谢您提供任何信息
解决方案
这类问题被问了很多。当前版本的 typescript 不理解字符串文字的映射,但该功能即将推出。
同时,您能做的最好的事情就是键入WITH_POSTFIX
一个对象,其键与WITHOUT_POSTFIX_VALUES
字符串的值相同。那将是:
Record<keyof typeof WITHOUT_POSTFIX_VALUES, string>
推荐阅读
- php - 列出表 A、搜索表 B 并使用结果更新表 A
- python - 如何使用 F.interpolate 在 PyTorch 中调整所有 4 个维度(NCHW)的大小?
- .net - 将 GIF 图像添加到 resources.rc 后,Visual Studio 会破坏它
- ssas - MDX 中的命名集与“分组集”
- r - R组合来自不同小标题的数据
- git - git clone 函数的哪个部分需要更长的时间?- “接收对象”或“解决增量”
- python - R/Python,如何在不使用简单 for 循环的情况下根据 2 个条件填充数据?
- java - 构建失败错误:如果 (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) 找不到符号
- python - “未分配指针被释放”错误使用 cython 与基于 FFTW 的外部 c 库并行
- r - 用于混合模型的 Gibbs 采样器中的 NA 错误