Pracuję nad aplikacją testującą, używając TypeScript i BackboneJS. To głównie katalog pracowników. Podczas próby zdefiniowania kolekcji pojawia się następujący błąd.Człon z nadpisaniem TypeScript nie jest podtypem oryginalnego elementu.
Type of overridden member 'url' is not subtype of original member defined by type 'Collection'
Oto moja definicja modelu i kolekcji.
class Employee extends Backbone.Model {
reports: EmployeeCollection;
constructor (options?) {
super(options);
this.reports = new EmployeeCollection();
this.reports.url = '../api/employees/' + this.id + '/reports';
}
}
class EmployeeCollection extends Backbone.Collection {
url: string = "../api/employees";
model = Employee;
findByName(key) {}
}
Używam również niektórych definicji dla interfejsu Szkielet z TypeScript i tutaj jest plik, którego używam.
export class Model {
static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality
constructor (attributes?: any, options?: any);
get(attributeName: string): any;
set(attributeName: string, value: any): void;
set(obj: any): void;
escape(attribute);
has(attribute);
unset(attribute, options?);
clear(options?);
id: any;
idAttribute: any;
cid;
attributes;
changed;
bind(ev: string, f: Function, ctx?: any): void; /// ????
// defaults; defaults();
toJSON(): string;
fetch(options?);
save(attributes? , options?): void;
destroy(options?): void;
validate(attributes);
isValid();
url();
urlRoot();
parse(response);
clone();
isNew();
change();
hasChanged(attribute?);
changedAttributes(attributes?);
previous(attribute);
previousAttributes();
}
export class Collection {
static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality
model;
constructor (models? , options?);
models;
toJSON(): any;
///// start UNDERSCORE 28:
bind(ev: string, f: Function, ctx?: any): void;
collection: Model;
create(attrs, opts?): Collection;
each(f: (elem: any) => void): void;
last(): any;
last(n: number): any[];
filter(f: (elem: any) => any): Collection;
without(...values: any[]): Collection;
// Underscore bindings
each(object: any, iterator: (value, key, list?) => void , context?: any): any[];
forEach(object: any, iterator: (value, key, list?) => void , context?: any): any[];
map(object: any, iterator: (value, key, list?) => void , context?: any): any[];
reduce(list: any[], iterator: any, memo: (memo: any, element: any, index: number, list: any[]) => any, context?: any): any[];
reduceRight(list: any[], iterator: (memo: any, element: any, index: number, list: any[]) => any, memo: any, context?: any): any[];
find(list: any[], iterator: any, context?: any): any; // ???
detect(list: any[], iterator: any, context?: any): any; // ???
filter(list: any[], iterator: any, context?: any): any[];
select(list: any[], iterator: any, context?: any): any[];
reject(list: any[], iterator: any, context?: any): any[];
every(list: any[], iterator: any, context?: any): bool;
all(list: any[], iterator: any, context?: any): bool;
any(list: any[], iterator?: any, context?: any): bool;
some(list: any[], iterator?: any, context?: any): bool;
contains(list: any, value: any): bool;
contains(list: any[], value: any): bool;
include(list: any, value: any): bool;
include(list: any[], value: any): bool;
invoke(list: any[], methodName: string, arguments: any[]): any;
invoke(object: any, methodName: string, ...arguments: any[]): any;
max(list: any[], iterator?: any, context?: any): any;
min(list: any[], iterator?: any, context?: any): any;
sortBy(list: any[], iterator?: any, context?: any): any;
sortedIndex(list: any[], valueL: any, iterator?: any): number;
toArray(list: any): any[];
size(list: any): number;
first(array: any[], n?: number): any;
initial(array: any[], n?: number): any[];
rest(array: any[], n?: number): any[];
last(array: any[], n?: number): any;
without(array: any[], ...values: any[]): any[];
indexOf(array: any[], value: any, isSorted?: bool): number;
shuffle(list: any[]): any[];
lastIndexOf(array: any[], value: any, fromIndex?: number): number;
isEmpty(object: any): bool;
groupBy(list: any[], iterator: any): any;
add(models, options?);
remove(models, options?);
get(id);
getByCid(cid);
at(index: number);
push(model, options?);
pop(options?);
unshift(model, options?);
shift(options?);
length: number;
//comparator;
sort(options?);
pluck(attribute);
where(attributes);
url();
parse(response);
fetch(options?: any): void;
reset(models, options?);
create(attributes, options?);
}
export class Router {
static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality
routes;
constructor (options?);
route(route, name, callback?);
navigate(fragment, options?);
}
Dodałem też tę definicję JQuery który brakuje: html (htmlElement: HTMLElement): JQuery; – Flyers