如何使用Typescript定义对象数组?

时间:2015-08-11 09:21:00

标签: typescript

有人可以给我一些建议。我在这里有一系列对象:

contentOrderBy = [
    { id: 0, name: 'CId', key: 'contentId' },
    { id: 1, name: 'Modified By', key: 'modifiedBy' },
    { id: 2, name: 'Modified Date', key: 'modified' },
    { id: 3, name: 'Status', key: 'contentStatusId' },
];

我想要做的是找到如何在Typescript中定义它。

4 个答案:

答案 0 :(得分:11)

不完全确定你是什么意思:

  

我想要做的是找到如何在Typescript中定义它。

但是一个选择是引入interface并声明变量作为此类对象的数组:

interface IMyEntity {
    id: number;
    name: string;
    key: string;    
}

var contentOrderBy = [
    { id: 0, name: 'CId', key: 'contentId' },
    { id: 1, name: 'Modified By', key: 'modifiedBy' },
    { id: 2, name: 'Modified Date', key: 'modified' },
    { id: 3, name: 'Status', key: 'contentStatusId' },
];

// finally here we have declaration of the array
// which contains the items of specified type/interface
// and we can later work with them "fully-typed"
var myContent : IMyEntity[] = contentOrderBy;

alert(myContent[0].name);

检查in action here

答案 1 :(得分:4)

如果要查找避免使用接口的选项,要声明数组以下两种语法是有效的:

contentOrderBy: { id: number, name: string, key: string }[];

contentOrderBy: Array<{ id: number, name: string, key: string }>;

然后按照OP的问题填充数组。

由于我在搜索在对象内部定义数组的正确方法时发现了这个问题,我也会添加该示例。在此示例中,对象的“key”属性是一个字符串数组。

contentOrderBy: { id: number, name: string, key: string[] }[];

contentOrderBy: Array<{ id: number, name: string, key: Array<string> }>;

答案 2 :(得分:0)

您可以尝试其中任何一种。他们没有给我错误..

//declare
private _possessions: Array<Thing>;
constructor(){
//assign
     this._possessions = new Array<Thing>();
}

<ListView>
    <ListView.View>
        <GridView>
            <GridView.ColumnHeaderContainerStyle>
                <Style TargetType="GridViewColumnHeader">
                    <Setter Property="Visibility" Value="Collapsed" />
                </Style>
            </GridView.ColumnHeaderContainerStyle>
        </GridView>
    </ListView.View>
</ListView>

答案 3 :(得分:0)

var storesArray : Store[]  = [
  {
    app_category : "app_cat",
    app_id : "11",
    id : "12",
    name : "g1",
    target_audience: "tar_aud",
    type: "intune"
  },
  {
    app_category : "app_cat2",
    app_id : "112",
    id : "122",
    name : "g12",
    target_audience: "tar_aud2",
    type: "intune2"
  }]