使用 TypeScript 函数返回 JSON 对象
Posted
技术标签:
【中文标题】使用 TypeScript 函数返回 JSON 对象【英文标题】:Return JSON object with TypeScript function 【发布时间】:2017-09-17 07:56:37 【问题描述】:我最近发现了 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】:您确实可以指定您返回object
(new 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;
【讨论】:
谢谢,这正是我所需要的。能否请您简要解释一下以下语法:[name: string]:
?
那叫Indexable Types。我认为文档很简单,所以请检查一下,如果您仍然不明白某些内容,请再次回复,我很乐意为您提供帮助以上是关于使用 TypeScript 函数返回 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript - 我无法使用 Angular 2 使用 http get 调用我的 json
我可以创建一个 TypeScript 类型并在 AJAX 返回 JSON 数据时使用它吗?
使用 TypeScript 对带有前缀的 JSON 文件键的类型定义