如何为以下结构的打字稿表示数据模型? id
之后的键值(例如a1
,a2
)是动态的,这意味着那里可以有不同的键值。
{
name: 'SampleName',
description: 'Sample description',
id: '_3434',
a1:'abc',
a2:'xyz'
}
尝试以下操作没有意义,因为我们的数据中没有others
。
interface TestData{
name:string;
description:string;
id:string;
others:any;
}
答案 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