当前位置: 首页 > 知识库问答 >
问题:

在Typescript[duplicate]中的JSON API响应上将字符串强制转换为Typescript中的数字

锺伟志
2023-03-14

我正在与返回JSON的Axios进行API调用。API将CUSIP返回为类型String,但是,我希望将其接收为类型Number。我创建了一个接口,它具有类型类型为数字,但是当我得到变量时,它仍然被视为字符串。

API调用和一些逻辑:

const axios = require('axios');
import { General } from './json-objects-new';

module.exports = {
    makeApiCall : function(ticker:string) {

    axios.get(`${API_ENDPOINT}${ticker}?api_token=${API_KEY}`)
        .then(function (response) {
            // handle success    
            return response.data;

        })
        .catch(function (error) {
            // handle error
            console.log(error);
        })
        .then(data => {

            let gen : General = data.General;

            let num = gen.CUSIP + 1337

            console.log(num);

        });

    }
}

名为General的接口,其中我将CUSIP转换为数字:

export interface General {
    ISIN: string;
    CUSIP: number;
}

问题是:不是将[CUSIP 1337]打印为[2 1337=1339],而是打印[21337]。我很乐意帮忙,谢谢。我真的不想在构造函数中手动强制转换所有内容。

共有2个答案

姜乐家
2023-03-14

你必须记住TypeScript只是Javascript上面的一层类型,它不会修改实际的javascript。

在您的情况下,即使CUSIP被键入为数字,您收到的实际数据也是一个字符串。您应该将从API获得的内容声明为字符串,然后将其转换为带有parseInt(gen.CUSIP,10).

娄振
2023-03-14

尝试将CUSIP从字符串更改为数字:

const axios = require("axios");
import { General } from "./json-objects-new";

module.exports = {
  makeApiCall: function(ticker: string) {
    axios
      .get(`${API_ENDPOINT}${ticker}?api_token=${API_KEY}`)
      .then(function(response) {
        // handle success
        return response.data;
      })
      .catch(function(error) {
        // handle error
        console.log(error);
      })
      .then(data => {
        let gen: General = data.General;

        let num = Number(gen.CUSIP) + 1337; /* convert CUSIP string to number */

        console.log(num);
      });
  }
};

 类似资料:
  • 给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?

  • 我有一个这样的代码,我正在使用flickr-sdk,它使用superagent来进行所有调用。 常量superagent=require('superagent');var flickr=require('flickr-sdk'); } 现在我这样叫它 Typescript给出此错误 有没有办法把承诺转换成字符串。然后返回该解析值。 编辑:已更新代码以返回favResponse

  • 我正在尝试将Typecript枚举值转换为数字,以便在我的下拉列表中显示枚举字符串值,但在提交按钮上,传递的是该值而不是字符串。枚举设置如下。 到目前为止,我已经能够控制台.log对象的键(字符串)(例如 Value),但我想做的是在发出对象后传递 0(数字)值。 我该怎么做?

  • 我在TypeScript中定义了以下枚举: 现在在我的函数中,我接收颜色作为字符串。我已经尝试了以下代码: 如何将该值转换为枚举?

  • 我用这个服务结果构造了一个组件类对象,我也得到了错误 错误TypeError:无法读取未定义的属性“name” 当我在HTML文件中使用它时。

  • 我知道我不是第一个问这个问题的人,正如我在标题中提到的,我正在尝试转换字符串值布尔值。 我之前已经将一些值放入本地存储,现在我想获取所有值并将所有值赋给一些布尔变量。 应用程序。组成部分ts 这里是这个。btnLoginNumOne和这个。btnLoginEdit是字符串值(“true,false”)。 镜子组成部分ts 在这个组件中this.btnLoginNumOne和t是布尔值; 我在sta