2016-08-17 7 views
5

Kann man in TypeScript eine Objektstruktur definieren, die dann als Parametertyp verwendet werden kann?TypeScript Objektstruktur zur späteren Verwendung definieren

Was ich meine:
Ich habe (sagen wir mal) 5-Funktionen, die die gleiche Objektstruktur wie so zurück:

foo(): { bar: string, baz: boolean, idk: number } { ... } 
bar(): { bar: string, baz: boolean, idk: number } { ... } 
... 

das Problem dabei ist, dass ich diese Struktur zu definieren, haben bei jedem Funktion, die ein Objekt wie dieses zurückgibt.

Also ist es möglich, etwas wie das Folgende zu tun?

declare const OBJECT_STRUCTURE: { bar: string, baz: boolean, idk: number } 

foo(): OBJECT_STRUCTURE { ... } 
bar(): OBJECT_STRUCTURE { ... } 
... 

Antwort

11

Sie können eine interface verwenden:

interface MyType { 
    bar: string; 
    baz: boolean; 
    idk: number; 
} 

function foo(): MyType { 
    return { 
     bar: "bar", 
     baz: true, 
     idk: 4 
    }; 
} 

(code in playground)

Oder ein type alias:

type MyType = { 
    bar: string; 
    baz: boolean; 
    idk: number; 
} 

function foo(): MyType { 
    return { 
     bar: "bar", 
     baz: true, 
     idk: 4 
    }; 
} 

(code in playground)

2

Eine wirklich nativen Lösung TS ist - erklären Schnittstelle

export interface IMyObject { 
    bar: string; 
    baz: boolean; 
    idk: number; 
} 

Und das überall leicht wiederverwendet werden können, ohne erneut erklärt, es

foo(): IMyObject { ... } 
bar(): IMyObject { ... } 

oder

other(obj: IMyObject) { ... } 
Verwandte Themen