3

我有一个从 $.ajax 调用返回给我的 JSON 对象。我从我的回复中得到我的对象,如下所示:

var parsedJSON = $.parseJSON(jqXHR.responseText);

从服务器传递的对象本身有一个 ResponseStatus 属性,并且在该 ResponseStatus 属性中,有一个 ErrorCode 和 Message。我以为我能做到这一点:

var r = parsedJSON.ResponseStatus;

但我得到了错误:The property 'ResponseStatus' does not exist on value of type 'object'

因为这是打字稿,所以当我尝试保存文件然后让 VS 创建我的 Javascript 时,它不会。

我在这里错过了一些非常明显的东西吗?我可以创建一个接口并将对象转换为这样的接口:

var parsedJSON: IHttpResponseStatus = <IHttpResponseStatus> $.parseJSON(jqXHR.responseText);
var r = parsedJSON.ResponseStatus;

但这似乎是为了获得财产而矫枉过正,而且非常错误。提前致谢。

编辑:哦,没关系,您可以使用数组表示法,而 TS 不在乎。哎呀!

4

1 回答 1

3

这是因为 jquery.d.ts 将 parseJSON 定义为:

parseJSON(json: string): Object;

它应该是任何。您可以自己转换结果以避免创建接口

var parsedJSON = <any> $.parseJSON(jqXHR.responseText);
var r = parsedJSON.ResponseStatus;

或者:

var parsedJSON:any = $.parseJSON(jqXHR.responseText);
var r = parsedJSON.ResponseStatus;

我也发送了一个拉取请求:https ://github.com/borisyankov/DefinitelyTyped/pull/554

于 2013-05-16T04:13:00.057 回答