如何基于TypeScript接口创建对象?

时间:2018-02-07 12:56:37

标签: javascript typescript typescript2.0

我在TypeScript中有以下界面:

export interface Defined {
   4475355962119: number[];
   4475355962674: number[];
}

我需要根据此界面Defined创建对象:

let defined = new Defined();
defined['4475355962119'] = [1];
defined['4475355962674'] = [2];

但它对我不起作用!

或者它可能应该是:

 export interface Defined {
      array(number): number[];
}

我有这个JSON对象,我需要创建JS对象:

  "parameters": {
    "defined": {
      4475355962119: [
      9547,
      9871
      ],
      4475355962674: [
      9829
      ]
    }
  }

3 个答案:

答案 0 :(得分:1)

让我们从有效的JSON字符串开始:

const data = `{
    "parameters": {
    "defined": {
      "4475355962119": [9547,9871],
      "4475355962674": [9829]
    }
  }
}`;

接口

如果我们想将此表示为接口,则思考过程是保留所有键,并将所有值替换为各自的类型,如下所示:

interface Data {
    parameters: {
        defined: {
            [index: number]: number[];
        }
    }
}

然后我们可以将数据反序列化为该类型:

const result = <Data>JSON.parse(data);

获得&#34;定义&#34;位:

const defined = result.parameters.defined;

完成示例

这是一个完整的例子:

const data = `{
    "parameters": {
    "defined": {
      "4475355962119": [9547,9871],
      "4475355962674": [9829]
    }
  }
}`;

interface Data {
    parameters: {
        defined: {
            [index: number]: number[];
        }
    }
}

const result = <Data>JSON.parse(data);

alert(result.parameters.defined['4475355962674'][0]); // 9829

创建数据

如果您没有反序列化数据,可以自己创建。类型注释将帮助您创建正确的对象。

const example: Data = {
    parameters: {
        defined: {
            '4475355962674': [0, 2, 3]
        }
    }
};

example.parameters.defined['4475355962674'][3] = 4;

答案 1 :(得分:0)

尝试以下代码段。

export interface Defined {
   4475355962119: number[];
   4475355962674: number[];
}
let defined = {} as  Defined;
defined['4475355962119'] = [1];
defined['4475355962674'] = [2];

答案 2 :(得分:0)

您可以使用常规对象文字:

let defined = {
    4475355962119 : [1],
    4475355962674 : [2]
};