网站搜索

接口 - 在 TypeScript 中包含特定字符串和迭代整数拼接的动态键


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

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

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

[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;
}

答案#1

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

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

然而,不可能将类型限制为匹配某个模式的字符串。在 GitHub 上有一个关于添加对此支持的建议。

对于索引类型,甚至不可能将其设为字符串字面量类型。你将不得不这样做:

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