2017-12-21 20 views
0

Ok, also habe ich bemerkt, dass Webstorm und VSCode nur gute Intellisense für Top-Level-Eigenschaften, nicht vererbte Eigenschaften, usw. machen. Also als Trick, würde ich gerne Fügen Sie Superklassen, die geerbte Eigenschaften sind, Eigenschaften hinzu, verweisen Sie jedoch nur auf die Typen aus der Oberklasse.Wie man den Typ des Superklassenfeldes im Subklassenfeld referenziert

Hier ein Screenshot zeigt, dass die beiden Top-Level-Eigenschaften in fett sind, und die vererbten Eigenschaften sind in grau:

enter image description here

Ich möchte die IDE Trick, einige der vererbten Eigenschaften zeigen, auch fett Ich habs?

ich folgende Schnittstellen haben, erstreckt sich das eine das andere:

export interface IHookOrTestCaseParam { 
    slow:() => void, 
    fatal: (err: any) => void, 
    callbackMode: boolean, 
    timeout: Function, 
    done: Function, 
    skip:() => void, 
    set: (k: string, v: any) => void, 
    get: (k?: string) => any, 
    getValues: (...args: Array<string>) => Array<any>; 
    getMap: (...args: Array<string>) => Object 
    wrap: (fn: Function) => Function 
    wrapFinal: (fn: Function) => Function; 
    final: (fn: Function) => void; 
    log: (...args: Array<string>) => void; 
    wrapFinalErrorFirst: (fn: Function) => Function; 
    wrapErrorFirst: (fn: Function) => Function; 
    handleAssertions: (fn: Function) => void; 
    assert: typeof chai.assert 
    expect: typeof chai.expect 
    should: typeof chai.should 
} 


export interface ITestCaseParam extends IHookOrTestCaseParam { 
    // the t in t => {} 
    (err?: Error): void 
    skip: IHookOrTestCaseParam.skip, // <<<< here is a problem 
    pass: Function, 
    fail: Function, 
    assert: typeof chai.assert, 
} 

sehe ich in meiner IDE:

enter image description here

wenn ich das ändern:

skip: IHookOrTestCaseParam.skip, 

dazu

skip: IHookOrTestCaseParam['skip'], 

Die Fehlermeldung scheint weg zu gehen:

enter image description here

Hat jemand verstehen, was ich zu tun versucht, und weiß, einen guten Weg, es zu tun?

+0

Da der Fehler zu sagen versucht, dass kein Typ ist. Was versuchst du zu machen? – SLaks

+2

Eigenschaften werden automatisch vererbt; Sie sollten nichts tun müssen. – SLaks

+0

** Eigenschaften werden automatisch vererbt, aber intellisense funktioniert nicht gut mit vererbten Eigenschaften, daher möchte ich sie erneut referenzieren. ** –

Antwort

1

Ja, ein Typoskript Schnittstelle den Typen einer anderen Schnittstelle Feld mit Namen verweisen kann:

interface A { 
    name: string; 
} 

interface B { 
    name: A['name']; 
} 
+0

Dies beantwortet die Frage, unabhängig davon, ob es eine gute Idee ist, so gebe ich Ihnen die Punkte –

+0

dies beantwortet die brillante Frage was devere upvote lol –

Verwandte Themen