代码之家  ›  专栏  ›  技术社区  ›  Alexander Mills

将字符串数组转换为TypeScript类型

  •  0
  • Alexander Mills  · 技术社区  · 6 年前

    假设我有一个字符串数组:

    const s = ['foo', 'rolo', 'zoombaz'];
    

    所以我会得到:

    type v = {
       foo: string,
       rolo: string,  
       zoombaz: string
    }
    

    奖励:理想情况下,我希望将它们映射到camel case,因此如果我有:

    const s = ['foo', 'rolo', 'zoom-baz'];
    

    type v = {
       foo: string,
       rolo: string,  
       zoomBaz: string
    }
    

    在某些情况下,我会告诉它使用布尔值而不是字符串。这是一个命令行解析器。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Matt McCutchen    6 年前

    首先,需要让TypeScript将数组的元素类型推断为字符串文本类型的并集,而不是扩展到 string . 编译器支持的标准技巧是通过一个identity函数来运行数组,该函数推断受 一串

    function asLiterals<T extends string>(arr: T[]): T[] { return arr; }
    const s = asLiterals(['foo', 'rolo', 'zoombaz']);
    

    type v = {[K in (typeof s)[number]]: string};
    

    推荐文章