如何在TypeScript中将普通字符串转换为Record<string, string>类型
将键值对字符串转换为Record<string, string>
你可以通过分割字符串 + 累加生成对象的方式实现这个需求,以下是具体的TypeScript代码实现:
const myStr = "key1=value1,key2=value2"; function strToRecord(str: string): Record<string, string> { // 按逗号分割成单个键值对字符串 return str.split(',').reduce((result, keyValuePair) => { // 按等号分割键和值 const [key, value] = keyValuePair.split('='); // 处理可能的空格,同时过滤无效的键值对 if (key && value) { result[key.trim()] = value.trim(); } return result; }, {} as Record<string, string>); // 指定初始值的类型为Record<string, string> } // 调用函数得到目标对象 const myRecord = strToRecord(myStr); console.log(myRecord); // 输出: { key1: "value1", key2: "value2" }
代码说明:
split(','):将原始字符串按逗号分割,得到["key1=value1", "key2=value2"]这样的数组reduce:遍历数组,逐步累加生成目标对象,初始值{} as Record<string, string>用于告诉TypeScript累加器的类型split('='):将每个键值对字符串拆分为键和值两部分trim():处理键或值前后可能存在的空格(如果你的字符串格式严格没有空格,可以省略)- 条件判断
if (key && value):避免处理无效的键值对(比如空字符串、只有键没有值的情况)
边界情况提示:
- 如果字符串中有重复的键(比如
"key1=value1,key1=value2"),后面的键值对会覆盖前面的,这是JavaScript对象的默认行为 - 如果原始字符串为空,函数会返回一个空对象
内容的提问来源于stack exchange,提问作者Raghavan Pu
相关产品推荐
相关产品推荐

