Typescript 类型化对象数组,不可分配给类型';任何[]和#x27;
我想根据类型定义一个对象。在该对象中是一个数组,由与给定类型相对应的元素组成。但是,我只想稍后将元素推送到这个数组,并暂时将其初始化为空。但这给了我一个错误,我无法理解。我的app.ts中有以下几行内容:Typescript 类型化对象数组,不可分配给类型';任何[]和#x27;,typescript,Typescript,我想根据类型定义一个对象。在该对象中是一个数组,由与给定类型相对应的元素组成。但是,我只想稍后将元素推送到这个数组,并暂时将其初始化为空。但这给了我一个错误,我无法理解。我的app.ts中有以下几行内容: const publishObject: MqttPublishObject = { IsTurnedOff: detail.isTurnedOff, processType: detail.pro
const publishObject: MqttPublishObject = {
IsTurnedOff: detail.isTurnedOff,
processType: detail.processType.name === "linear" ? 0 : 1,
anchorPoints: <MqttPublishAnchorPoint>[]
};
export interface MqttPublishObject {
IsTurnedOff : boolean;
processType : number;
anchorPoints : MqttPublishAnchorPoint[];
}
TypeDef位于以下文件中:
mqttPublishObject.ts:
const publishObject: MqttPublishObject = {
IsTurnedOff: detail.isTurnedOff,
processType: detail.processType.name === "linear" ? 0 : 1,
anchorPoints: <MqttPublishAnchorPoint>[]
};
export interface MqttPublishObject {
IsTurnedOff : boolean;
processType : number;
anchorPoints : MqttPublishAnchorPoint[];
}
mqttPublishAnchorPoint.ts
export interface MqttPublishAnchorPoint {
hour: number;
minute: number;
second: number;
intensity: number;
}
我觉得我走错了方向,但我不知道怎么做。到底是什么问题?这些错误基本上告诉您两件事:
- 第一个错误表示您试图将类型为
的值分配给类型为MqttPublishAnchorPoint
的字段。这意味着TypeScript不知何故不将数组视为数组,而是将其视为MqttPublishAnchorPoint[]
MqttPublishAnchorPoint
- 原因由第二个错误给出:您试图将数组类型(
)的某些值强制转换为undefined[]
),TypeScript无法理解此断言,因为类型是不重叠的MqttPublishAnchorPoint
[]
表示[]作为T
,而不是[]作为T[]
,即强制转换应用于数组,而不是其内部类型。解决方法很简单:
const publishObject: MqttPublishObject = {
IsTurnedOff: detail.isTurnedOff,
processType: detail.processType.name === "linear" ? 0 : 1,
anchorPoints: <MqttPublishAnchorPoint[]>[],
};
[]
表示作为MqttPublishAnchorPoint的[],而不是作为MqttPublishAnchorPoint的[]
。这可能是错误的原因。啊,谢谢!我是这样解决的:[]。如果你愿意回答这个问题,我可以给你一个公认的答案。