2012-10-22 7 views
6

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?); 
} 

Odpowiedz

Powiązane problemy