创建对象时将打字稿自动将数字转换为字符串

时间:2019-04-08 08:41:52

标签: angular typescript http http-post

我有一种通用的函数,该函数接受字段(类属性)并从中创建POST请求。

代码是这样的:

public state: number;

updateField(field: string | number, name: string, team: boolean = true) {
  this.http.post('/update_key', {
        [path]: { [name]: field }
  })
}
  

此处path是具有Firebase路径的变量,例如/ipl_data/match_info/current_match

我这样称呼this.updateField(this.state, 'state', false);

发送此请求后,将创建请求正文,如下所示:

{
  "/ipl_data/match_info/current_match": {
    "state":"3"
  }          ^------ this should be a number since type was defined as number
}

有没有办法解决这种情况?

2 个答案:

答案 0 :(得分:0)

我会尝试:

updateField(field: string | number, name: string, team: boolean = true) {
  this.http.post('/update_key', {
        [path]: { [name]: !isNaN(field) ? +field : field }
  })
}

答案 1 :(得分:0)

机会首先是您的this.state === "3"。检查this.state分配值的位置。

这更多是“ javascript”问题,而不是“打字稿”问题。您需要了解打字稿对代码的运行时行为具有影响,它仅在IDE和编译代码时有效。