如何基于接口 TypeScript 创建对象?
How to create object based on interface TypeScript?
我在 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
]
}
}
尝试以下代码片段。
export interface Defined {
4475355962119: number[];
4475355962674: number[];
}
let defined = {} as Defined;
defined['4475355962119'] = [1];
defined['4475355962674'] = [2];
您可以使用常规对象字面量:
let defined = {
4475355962119 : [1],
4475355962674 : [2]
};
让我们从一个有效的 JSON 字符串开始:
const data = `{
"parameters": {
"defined": {
"4475355962119": [9547,9871],
"4475355962674": [9829]
}
}
}`;
界面
如果我们想将其表示为一个接口,思路是保留所有键,并将任何值替换为它们各自的类型,就像这样:
interface Data {
parameters: {
defined: {
[index: number]: number[];
}
}
}
然后我们可以将数据反序列化为该类型:
const result = <Data>JSON.parse(data);
并只获取 "defined" 位:
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;
我在 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
]
}
}
尝试以下代码片段。
export interface Defined {
4475355962119: number[];
4475355962674: number[];
}
let defined = {} as Defined;
defined['4475355962119'] = [1];
defined['4475355962674'] = [2];
您可以使用常规对象字面量:
let defined = {
4475355962119 : [1],
4475355962674 : [2]
};
让我们从一个有效的 JSON 字符串开始:
const data = `{
"parameters": {
"defined": {
"4475355962119": [9547,9871],
"4475355962674": [9829]
}
}
}`;
界面
如果我们想将其表示为一个接口,思路是保留所有键,并将任何值替换为它们各自的类型,就像这样:
interface Data {
parameters: {
defined: {
[index: number]: number[];
}
}
}
然后我们可以将数据反序列化为该类型:
const result = <Data>JSON.parse(data);
并只获取 "defined" 位:
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;