我可以创建 TypeScript 类型并在 AJAX 返回 JSON 数据时使用它吗? [英] Can I create a TypeScript type and use that when AJAX returns JSON data?

查看:27
本文介绍了我可以创建 TypeScript 类型并在 AJAX 返回 JSON 数据时使用它吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下 C# 类:

public class JsonBackup
{
    public int Added { set; get; }
    public int DEVCount { set; get; }
    public int DS1Count { set; get; }
    public IList<ViewEvent> Events { get; set; }
    public IEnumerable<string> Errors { set; get; }
    public int Rejected { set; get; }
    public bool Success { set; get; }
    public int Updated { set; get; }
}

以及将 JSON 数据返回到我的浏览器的代码:

and this code to return JSON data to my browser:

return Json(new JsonBackup
{
    Added = added,
    DEVCount = devCount,
    DS1Count = ds1Count,
    Events = t.Events,
    Rejected = rejected,
    Success = true,
    Updated = updated
});

这里返回数据:

 $.ajax("/Backup/Data/Backup",
    {
        cache: false,
        dataType: 'json',
        type: 'POST'
    })
 .done(function (data: ) {
     console.log(data);
     backupDone(data, ajaxElapsed);
 });

并在其他地方以及此处使用:

and used in other places and also here:

   $.each(data.Events, function (i, item) {
        $("#stats-list li:eq("+(4+i)+")").after('<li>' + item.Description + ' : ' + item.Elapsed + ' ms</li>');
    });

我是否可以创建一个 TypeScript 类型并将数据分配给该类型,以便我可以例如在选择诸如

Is it possible for me to create a TypeScript type and assign data to that type so I could for example get intellisense when selecting such things as

data.Added or data.DEVCount etc?

推荐答案

实现这一点的最简单方法是为 IJsonBackup 创建接口,当您收到 json 时,只需将其转换为 IJsonBackup

Simplest way to achieve that is to create interface for IJsonBackup and when you receive json just cast it to IJsonBackup

interface IViewEvent
{
}

interface IJsonBackup
{
    Added : number;
    DEVCount : number;
    DS1Count : number;
    Events : IViewEvent[];
    Errors : string[];
    Rejected : number;
    Success : bool;
    Updated : number;
}

在您的类定义中:

backupDone(data: IJsonBackup, ajaxElapsed: any)
{
}

$.ajax("/Backup/Data/Backup",
    {
        cache: false,
        dataType: 'json',
        type: 'POST'
    })
    .done(function (data: any) {
        console.log(data);
        backupDone(<IJsonBackup>data, ajaxElapsed);
    });

这篇关于我可以创建 TypeScript 类型并在 AJAX 返回 JSON 数据时使用它吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆