Fix type lost caused by incorrect inheritance of ClassArray

This commit is contained in:
József Farkas
2016-04-23 23:45:05 +02:00
parent 5a123d55c2
commit b9b2fcbf84
14 changed files with 32 additions and 38 deletions

View File

@@ -1,18 +1,18 @@
import {Serializable} from './Serializable';
import {UhkBuffer} from './UhkBuffer';
export abstract class ClassArray<T> extends Serializable<T> {
export abstract class ClassArray<T extends Serializable<T>> extends Serializable<ClassArray<T>> {
elements: Serializable<T>[] = [];
elements: T[] = [];
_fromJsObject(jsObjects: any): Serializable<T> {
_fromJsObject(jsObjects: any): ClassArray<T> {
for (let jsObject of jsObjects) {
this.elements.push(this.jsObjectToClass(jsObject));
}
return this;
}
_fromBinary(buffer: UhkBuffer): Serializable<T> {
_fromBinary(buffer: UhkBuffer): ClassArray<T> {
let arrayLength = buffer.readCompactLength();
if (buffer.enableDump) {
@@ -49,6 +49,6 @@ export abstract class ClassArray<T> extends Serializable<T> {
return `<${this.constructor.name} length="${this.elements.length}">`;
}
abstract jsObjectToClass(jsObject: any): Serializable<T>;
abstract binaryToClass(buffer: UhkBuffer): Serializable<T>;
abstract jsObjectToClass(jsObject: any): T;
abstract binaryToClass(buffer: UhkBuffer): T;
}