我需要一点帮助。
我的API响应如下:
Week At A Glance: { objA: [{}], objB: [{}] },
records: { Employee Records: [{}], Email Records: [{}], message: "" },
history: { [{}] }
当我尝试如下创建模型时,无法继续。我创建如下
interface DesiredResponse {
[key: string] : {
objA: ObjA[],
objB: ObjB[]
},
records: Records[],
history: History[]
}
interface Records {
[key: string]: EmpRecords | EmailRecords;
message: string
}
打字稿错误:类型为'Records []'的属性'records'无法分配给字符串索引类型'{objA:BbjA []; objB:ObjB []}'
类型为'string'的属性'message'不能分配给字符串索引类型'EmpRecords | EmailRecords'
如何有效地键入它,以便在访问此模型时得到自动建议。
答案 0 :(得分:0)
编辑:
这实际上是由您的代码中的一个单一问题引起的,在该问题中,您定义的接口将Records
接口的列表版本用于records
属性,而不是API响应是实际返回的(不是数组-对象):
interface DesiredResponse {
// ...
records: Records; // Originally Records[]
}
原始答案:
这是因为在TypeScript界面中定义单独的属性通常需要您使用分号而不是逗号,而JSON则相反,您可以使用相反的方式(也可以使用逗号代替分号):
export interface MyInterface {
property1: string;
property2: boolean;
// etc
}
vs:
export interface MyInterface {
property1: string,
property2: boolean // Would not compile
}