我想描述一种具有以下行为的类型
export class myData {
key : string;
display_name : string;
}
但是我希望key
和display_name
的动态名称包含我提供的实际密钥和display_name
例如。以下是有效的myData类型
mySample1:myData =
{
myKey : 'myKeyValue'
myName : 'myNameValue'
}
mySample1:myData =
{
myKey2 : 'myKeyValue2'
myName2 : 'myNameValue2'
}
这样做的动机是我有很多来自API的数据,它返回一个具有相同密钥数且每个密钥具有相同类型值的对象列表。但问题是每个数据都有不同的密钥名称。
我想在angular2中创建一个Component
,它只获取具有一定数量键的对象列表,并且每个键的值必须是某种类型。
例如,我不希望我的Component
采取
var test =
{
myKey2 : 1
myName2 : 'myNameValue2'
}
或
var test2 =
{
myKey2 : 'myNameValue1'
myName2 : 'myNameValue2'
mySomeOtherKey : 'myNameValue10'
}
打字稿有可能吗?如果有可能,这是打字稿中的一个好主意吗?
答案 0 :(得分:1)
例如。以下是有效的myData类型
TypeScript是结构性的。由于您希望这两者都有效:
mySample1:myData =
{
myKey : 'myKeyValue'
myName : 'myNameValue'
}
mySample1:myData =
{
myKey2 : 'myKeyValue2'
myName2 : 'myNameValue2'
}
您可以轻松地将myData
声明为这两种类型的联盟:
type MyData = {
myKey: string;
myName: string;
}
| {
myKey2: string;
myName2: string;
}
let mySample1: MyData =
{
myKey: 'myKeyValue',
myName: 'myNameValue'
}
mySample1 =
{
myKey2: 'myKeyValue2',
myName2: 'myNameValue2'
}