在打字稿中定义模型

时间:2019-04-23 13:41:23

标签: typescript

如何为以下结构的打字稿表示数据模型? id之后的键值(例如a1a2)是动态的,这意味着那里可以有不同的键值。

    {
        name: 'SampleName',
        description: 'Sample description',
        id: '_3434',

        a1:'abc',
        a2:'xyz'
    }

尝试以下操作没有意义,因为我们的数据中没有others

interface TestData{
name:string;
description:string;
id:string;

others:any;
}

1 个答案:

答案 0 :(得分:2)

您可以定义一个具有一些已知属性的类型,以及一个用于动态数据的索引签名。索引签名必须与所有属性兼容,但是在这种情况下,您只有字符串,所以这不是问题:

interface TestData {
    name: string;
    description: string;
    id: string;

    [name: string]: string
}

您应该谨慎使用此类类型,它们将允许以任何方式建立索引,因此不会引发任何编译器错误:

 declare let a: TestData;
 a.notHere // ts is ok with this since the index signature is there