JSON 对象的 TypeScript 键控数组缺少属性错误
TypeScript keyed array of JSON objects missing properties error
我正在开发一个 Angular 项目,在该项目中我有一个包含查询对象数组的服务。我的麻烦是编译器抱怨我的数组中缺少属性的以下错误消息,我不清楚:
ERROR in src/app/query.service.ts:8:3 - error TS2740: Type '{ '1': Query; }' is missing the following properties from type 'Query[]': length, pop, push, concat, and 26 more.
8 query: Query[] = {
~~~~~~~~~
我的代码如下。
query.service.ts:
import { Injectable } from '@angular/core';
import { Query } from './query/query.module';
@Injectable({
providedIn: 'root'
})
export class QueryService {
queries: Query[] = {
'1' : new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
};
constructor() {
console.log(this.queries);
}
}
query.model.ts:
export class Query {
public id: number;
public type: string;
public options: string;
public sections: string;
constructor(data: any) {
const json_data = JSON.parse(data);
this.id = json_data.id;
this.type = json_data.type;
this.options = json_data.options;
this.sections = json_data.sections;
}
}
您正在将对象分配给数组类型。
您的 QueryService 查询应该具有 Record 类型而不是 Query[]:
export class QueryService {
queries: Record<string, Query> = {
'1' : new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
};
constructor() {
console.log(this.queries);
}
}
或其他方式:
queries: Query[] = [
new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
];
我正在开发一个 Angular 项目,在该项目中我有一个包含查询对象数组的服务。我的麻烦是编译器抱怨我的数组中缺少属性的以下错误消息,我不清楚:
ERROR in src/app/query.service.ts:8:3 - error TS2740: Type '{ '1': Query; }' is missing the following properties from type 'Query[]': length, pop, push, concat, and 26 more.
8 query: Query[] = {
~~~~~~~~~
我的代码如下。
query.service.ts:
import { Injectable } from '@angular/core';
import { Query } from './query/query.module';
@Injectable({
providedIn: 'root'
})
export class QueryService {
queries: Query[] = {
'1' : new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
};
constructor() {
console.log(this.queries);
}
}
query.model.ts:
export class Query {
public id: number;
public type: string;
public options: string;
public sections: string;
constructor(data: any) {
const json_data = JSON.parse(data);
this.id = json_data.id;
this.type = json_data.type;
this.options = json_data.options;
this.sections = json_data.sections;
}
}
您正在将对象分配给数组类型。 您的 QueryService 查询应该具有 Record 类型而不是 Query[]:
export class QueryService {
queries: Record<string, Query> = {
'1' : new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
};
constructor() {
console.log(this.queries);
}
}
或其他方式:
queries: Query[] = [
new Query( {"type":"test","id":"1","data":["test---data",{"misc":["alt-url","alt-redirect","published-date","granted-approved","signed-off"],"default":"true"}]} ),
];