【问题标题】:Typescript interface specific keys different than index打字稿接口特定键不同于索引
【发布时间】:2021-08-11 03:50:16
【问题描述】:

我有一个几乎所有字符串的对象,除了几个键(已知)是string[]

Interface MostlyStrings{
   [key:string]:string,
   specificKey1:string[],
   specificKey2:string[],
}

这不起作用,因为string[] 与索引不匹配。

我想避免[key:string]:string|string[],因为那样我将不得不在所有代码中指定字符串和数组。

是否可以接口所有除了几个已知键都是string

【问题讨论】:

    标签: typescript


    【解决方案1】:

    在过去几年一直在跟踪的 TS 存储库中有一个 open issue。目前,无法执行此操作。

    使用交集类型也可以达到类似的效果:

    type MostlyStrings = {
       [key: string]: string;
    } & {
       specificKey1: string[];
       specificKey2: string[];
    };
    

    您将无法构造这种类型的对象字面量,但它至少可以正确地进行类型检查/自动完成。在实践中,您只需执行示例中的操作并更新索引签名以包含已知属性的类型,即使它不能准确反映您的意图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 2017-09-02
      相关资源
      最近更新 更多