我有大约5个接口,我正在导出并需要跨多个组件使用。这些接口都是相关的,因为它们中的每一个都包含/引用其中一个作为数据数组。
以下是一个例子:
export interface ParentData {
UIVersion: number;
VersionID: number;
Rule: RuleData[];
}
export interface RuleData {
RuleParentID: number;
RuleVersionID: number;
MappedValue: number;
ProcessingOrder: number;
KeyID: number;
Value: string;
IsRuleRetired: boolean;
UserImpactCount: number;
Attribute: AttributeData[];
}
export interface AttributeData {
AttributeID: number;
AttributeName: string;
OperatorID: number;
OperatorName: string;
SQLOperator: string;
AttributeValue: ValueData[];
}
export interface ValueData {
RuleDetailID?: number;
AttrValue: number;
Value: string;
IsValueRetired: boolean
}
我创建了一个接口文件,其中包含了所有这些,然后将它们导入到使用它们的组件中。
执行此操作时,我会收到错误/无法编译,说明它们已丢失或没有导出的成员。
但是,如果我将其中的所有5个单独包含在每个组件中的示例中,则会编译,只会抛出"export 'ValueData' was not found in './../../../example.component
等警告。
导出相互引用的接口是否存在任何问题,这些接口包含在自己的文件中并导入到组件中?
更新
在删除所有基于组件的接口并由导入文件替换后,我重新启动了服务器。它成功编译,但是,每个接口都会收到一个警告,包括另一个接口的数组。
export 'ValueData' was not found in
export 'AttributeData' was not found in
export 'RuleData' was not found in
我认为现在可以忽略这一点,假设定义实际存在并且打字稿只是很奇怪..
更新2:
这些警告可能是因为我没有初始化数组?
@Input() parentRuleData: RuleData; // Rules Data
ngOnInit() {
this.ruleFormGroup = this.toFormGroup(this.parentRuleData);
}
private toFormGroup(data: RuleData) {
const formGroup = this._fb.group({
RuleParentID: [ data.RuleParentID ],
RuleVersionID: [ data.RuleVersionID ],
MappedValue: [ data.MappedValue],
ProcessingOrder: [ data.ProcessingOrder ],
KeyID: [data.KeyID ],
Value: [data.Value],
IsRuleRetired: [data.IsRuleRetired],
UserImpactCount: [data.UserImpactCount]
});
return formGroup;
}
但是,如果我将Input
更改为@Input() parentRuleData: RuleData[] = [];
以及将toFormGroup(data: RuleData)
更改为toFormGroup(data: RuleData[])
,则会ngOnInit
和toFormGroup
方法错误:
Argument of type 'RuleData[]' is not assignable to parameter of type 'RuleData'.
答案 0 :(得分:3)
在您的上一个界面上,您遗漏了semicolon
export interface ValueData {
RuleDetailID?: number;
AttrValue: number;
Value: string;
IsValueRetired: boolean; <----
}
此外,似乎已知问题