繁体   English   中英

如何在 TypeScript 中定义结构?

[英]How to define a structure in TypeScript?

我有以下 Json 主体结构。 我想将它用作 Angular 8 中 POST 调用的原始主体,来自表单的输入数据,我想在 Type Script 中使其成为 JSON 结构或某些类结构,但不知道如何实现:

{
    "valueMap": {
        "A1": {
            "price": 100,
            "remaining": 200
        },
        "A2": {
            "price": 100,
            "remaining": 200
        }
    }
}

我在 Java 中做了同样的事情:

class Request {
  Map<String, Amount> valueMap = new HashMap<>();
}

class Amount {
  double price;
  double remaining;
}

Typescript 中的语法非常接近于用 Java 编写的语法。 以下是您将使用的接口示例:

interface Values {
  [K: string]: Amount
}


interface Amount {
  price: number
  remaining: number
}

const response: Values = {
  "Key1": {
    price: 1,
    remaining: 2,
  },
  "Key2": {
    price: 1,
    remaining: 2,
  }  
}


使这项工作的技巧是[K: string]语法,它强制索引的类型为字符串。

要记住的一个警告是索引可能只是一个numberstring

您可以简单地在组件内部创建一个对象,并在进行 API 调用时直接使用它

export class AppComponent  {
  valueMap = {};

  constructor(http: HttpClient) {
    this.valueMap['A1'] = {price: 10, remaining: 20};
    this.valueMap['A2'] = {price: 10, remaining: 20};


    http.post('http://example.com', this.valueMap)
            .subscribe(() => {

    });
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM