我有一些代码,我想try 删除以下内容的使用:
let result: any;
结果可以是从REST API调用返回的大型JSON. 并将其替换为递归类型别名 所以我有这个:
type Json = string | number | boolean | null | Array<Json> | { [key: string]: Json };
一旦我这样做了,我的代码就会抱怨如下:
if (result.reasonCode != "8700" && result.reasonCode != "8207") {
.
.}
由于未定义原因代码. 于是我试着添加了这个--不确定这是正确还是错误的.这只是我试图绕过最初的错误.我希望不必使用界面.我正在使用TypeScrip V5.
interface JsonArray extends Array<Json> {
reasonCode: string;
message: string;
}
然后我将结果更改为:
let result: JsonArray;
now I do not get any compile errors for result.reasonCode.
but I now get another error
当我这样做的时候:
if (result === "error" {
.
.}
错误在于, This comparison appears to be unintentional because the types 'JsonArray' and 'string' have no overlap
为了解决这个问题,我不得不改成这样:
let result: JsonArray | "error";
我无法控制rest API调用返回的内容.
这一切看起来有点杂乱无章,所以寻求一些建议.