首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TypeScript函数返回JSON对象

用TypeScript函数返回JSON对象
EN

Stack Overflow用户
提问于 2017-04-20 15:19:56
回答 1查看 32.3K关注 0票数 15

我最近发现了TypeScript,并试图将现有的JavaScript代码转换为TypeScript。

我有一个函数,它从字符串(data)中检索信息,将其放入JSON对象(json)并返回它。但是,当使用TypeScript而不指定返回类型时,在Eclipse中会出现以下错误:

返回表达式之间不存在最佳的公共类型。

当我添加any返回类型时,它就消失了,但我认为这不是一个好的解决方案(过于通用)。我找不到"json“或"object”类型。

我的问题是:我应该使用什么返回类型?

以下是功能:

代码语言:javascript
复制
function formaterDonnees(data: string) { // or (data: string): any
    // final json object
    var json = {
        y: {
            "vars": [],
            "smps": [],
            "data": []
        }
    };

    // ...
    // processing data...
    // ...

    // put new variables in JSON (not real values below)
    json.y.data = ["data"];
    json.y.smps = ["smps"];
    json.y.vars = ["vars"];

    return json;

};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 15:30:34

您确实可以指定返回object (打字本2.2新版本),但是可以为返回值创建一个类型:

代码语言:javascript
复制
type MyReturnTypeItem = {
    vars: string[];
    smps: string[];
    data: string[];
}

type MyReturnType = {
    [name: string]: MyReturnTypeItem;
}

function formaterDonnees(data: string): MyReturnType {
    var json = {
        y: {
            "vars": [],
            "smps": [],
            "data": []
        }
    };

    // put new variables in JSON (not real values below)
    json.y.data = ["data"];
    json.y.smps = ["smps"];
    json.y.vars = ["vars"];

    return json;

};

(操场密码

另外,当我使用类型别名时,您也可以对接口做同样的操作

代码语言:javascript
复制
interface MyReturnTypeItem {
    vars: string[];
    smps: string[];
    data: string[];
}

interface MyReturnType {
    [name: string]: MyReturnTypeItem;
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43523645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档