Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何描述具有动态名称的typescript中的a类型?_Javascript_Typescript_Angular - Fatal编程技术网

Javascript 如何描述具有动态名称的typescript中的a类型?

Javascript 如何描述具有动态名称的typescript中的a类型?,javascript,typescript,angular,Javascript,Typescript,Angular,我想描述一种具有以下行为的类型 export class myData { key : string; display_name : string; } 但是,我希望键和display\u name具有我提供的实际键和display\u名称的动态名称 以下是有效的myData类型 mySample1:myData = { myKey : 'myKeyValue' myName : 'myNameValue' } mySampl

我想描述一种具有以下行为的类型

export class myData {
    key          : string;
    display_name : string;  
}
但是,我希望
display\u name
具有我提供的实际键和display\u名称的动态名称

以下是有效的myData类型

mySample1:myData =
{ 
    myKey    : 'myKeyValue'
    myName   : 'myNameValue'
}

mySample1:myData =
{ 
    myKey2    : 'myKeyValue2'
    myName2   : 'myNameValue2'
}
这样做的动机是,我从API中获得了大量数据,这些数据返回了一个对象列表,其中的键数相同,每个键的值类型也相同。但问题是,每个数据都有不同的键名

我想在angular2中创建一个
组件
,该组件只获取一个具有一定数量键的对象列表,并且每个键的值必须是特定类型

例如,我不希望我的
组件

var test =
{ 
    myKey2    : 1
    myName2   : 'myNameValue2'
}

这在typescript中可能吗?如果可能的话,这在typescript中是个好主意吗

以下是有效的myData类型

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'
    }
type MyData = {
    myKey: string;
    myName: string;
}
    | {
        myKey2: string;
        myName2: string;
    }

let mySample1: MyData =
    {
        myKey: 'myKeyValue',
        myName: 'myNameValue'
    }

mySample1 =
    {
        myKey2: 'myKeyValue2',
        myName2: 'myNameValue2'
    }