首页 > 解决方案 > 如何转换数组中的每种类型?

问题描述

我有以下类型

type ParseMustaches<T extends string[], U extends Record<string, string> = {}> = 
  T extends `{{${infer U}}}` 
    ? Record<U, string> 
    : never

type Test = ParseMustaches<["{{sitename}}", "{{user}}"]>

// expect Test to become { sitename: string, user: string }

我想从这里返回一个需要所有键的对象,键都是推断值,值是字符串,我该如何实现? 使用我正在使用的 TS 版本的游乐场链接到允许推断字符串的 PR

标签: typescripttypescript-typings

解决方案


那是因为T是一个元组/数组,所以它没有扩展模式,你需要测试的是元组的项:

type ParseMustaches<T extends string[]> = 
  T[number] extends `{{${infer U}}}` 
    ? Record<U, string> 
    : never

操场


推荐阅读