【问题标题】:dynamic key which contain a concatenation of specific string and iterative integer in typescript在打字稿中包含特定字符串和迭代整数的串联的动态键
【发布时间】:2016-07-27 13:19:10
【问题描述】:

我想声明一个接口,它的键包含特定的字符串值,这些值是一些固定字符串和增量值的组合,例如('first1', 'first2', 'first', 'first4')。

这里的键是固定字符串的连接,即'first'和一个增量值,即(1,2,3,4)。

我不想在我的特定情况下使用通用对象,键应该包含一些特定的字符串

[key: string]: string;

例如

我想为这两个对象声明一个通用接口

对象1

{
    'user': admin,
    'login': true,
    'first1': 1,
    'first2': 2,
    'first3': 3;
    'first4': 4;
    'first5': 5;
}

对象 2

{
    'user': guest,
    'login': false,
    'first1': 1,
    'first2': 2;
    'first3': 3;
}

【问题讨论】:

  • 根本不清楚你在问什么。请用清晰的解释和示例编辑您的问题。
  • @NitzanTomer 我已经更新了。
  • 你为什么不直接删除所有这些变量并放置一个数组呢?那将简化一切。您正在尝试做的事情会让您头疼....
  • 更重要的是,为什么要声明一个通用接口?

标签: typescript interface


【解决方案1】:

您可以为特定字符串编写类型约束:

type FirstStrings = "first1" | "first2" | "first3" | "first4";

但是,不可能将类型限制为与模式匹配的字符串。在 github 上有一个 suggestion 关于添加对此的支持。

在索引类型的情况下,甚至不可能使其成为字符串文字类型。你将不得不做这样的事情:

interface MyInterface {
    user: User;
    login: boolean;
    first1?: string;
    first2?: string;
    first3?: string;
    first4?: string;
    first5?: string;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2021-08-03
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多