使用TypeScript函数返回JSON对象

时间:2017-04-20 15:19:56

标签: javascript json function typescript return

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

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

  

返回表达式中没有最常见的类型

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

我的问题是:我应该使用哪种返回类型?

这是功能:

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;

};

1 个答案:

答案 0 :(得分:5)

您确实可以指定返回objectnew to typescript 2.2),但您可以为返回值创建一个类型:

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;

};

code in playground

此外,虽然我使用了type alias,但您可以使用interfaces执行相同操作:

interface MyReturnTypeItem {
    vars: string[];
    smps: string[];
    data: string[];
}

interface MyReturnType {
    [name: string]: MyReturnTypeItem;
}