Optmize archive function type

This commit is contained in:
ben.qin 2022-04-21 17:25:25 +08:00
parent 1d36aac37d
commit de0dd57a04
2 changed files with 8 additions and 8 deletions

View File

@ -17,7 +17,7 @@ interface IArchiveCtrlObject {
/**
*
*/
class CtrlObject extends LabelObject {
class CtrlObject<A extends IAnyObject = IAnyObject> extends LabelObject {
/**
*
@ -109,7 +109,7 @@ class CtrlObject extends LabelObject {
return this.deleteFlag;
}
public toArchive<T>(): IArchiveCtrlObject & T {
public toArchive(): IArchiveCtrlObject & A {
return {
displayName: this.displayName,
color: this.color.concat([]),
@ -121,7 +121,7 @@ class CtrlObject extends LabelObject {
} as any;
}
public fromArchive<T>(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void {
public fromArchive(archive: IArchiveCtrlObject & A, paster?: IArchiveParseFn): void {
this.displayName = archive.displayName;
this.color = archive.color.concat([]);
this.display = !!archive.display;

View File

@ -10,7 +10,7 @@ interface IArchiveRange {
/**
*
*/
class Range extends CtrlObject {
class Range extends CtrlObject<IArchiveRange> {
/**
*
@ -31,7 +31,7 @@ class Range extends CtrlObject {
}
}
public override toArchive<T>(): IArchiveCtrlObject & T {
public override toArchive(): IArchiveCtrlObject & IArchiveRange {
return {
...super.toArchive(),
position: this.position.concat([]),
@ -39,10 +39,10 @@ class Range extends CtrlObject {
};
}
public override fromArchive<T>(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void {
public override fromArchive(archive: IArchiveCtrlObject & IArchiveRange, paster?: IArchiveParseFn): void {
super.fromArchive(archive, paster);
this.position = (archive as any).position.concat([]),
this.radius = (archive as any).radius.concat([])
this.position = archive.position.concat([]),
this.radius = archive.radius.concat([])
}
}