首页 > 解决方案 > 如何正确键入更改对象值的函数

问题描述

我在打字方面没有太多经验,所以有时会出现这样的问题。如何正确键入为对象 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

我想获得具有只读字段但添加了后缀的相同对象。提前感谢您提供任何信息

标签: typescripttypes

解决方案


这类问题被问了很多。当前版本的 typescript 不理解字符串文字的映射,但该功能即将推出。

同时,您能做的最好的事情就是键入WITH_POSTFIX一个对象,其键与WITHOUT_POSTFIX_VALUES字符串的值相同。那将是:

Record<keyof typeof WITHOUT_POSTFIX_VALUES, string>

推荐阅读