web-dev-qa-db-fra.com

TypeScript définit la structure de l'objet pour une utilisation ultérieure

Est-il possible de définir une structure d'objet en TypeScript pouvant être utilisée ensuite comme type de paramètre?

Ce que je veux dire:
J'ai (disons) 5 fonctions qui retournent la même structure d'objet comme ceci:

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

le problème avec cela est que je dois définir cette structure à chaque fonction qui renvoie un objet comme celui-ci.

Est-il donc possible de faire quelque chose comme ce qui suit?

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

foo(): OBJECT_STRUCTURE { ... }
bar(): OBJECT_STRUCTURE { ... }
...
13
kristóf baján

Vous pouvez utiliser une interface :

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

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

( code dans l'aire de jeux )

Ou un type alias :

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

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

( code dans l'aire de jeux )

20
Nitzan Tomer

Est-il donc possible de faire quelque chose comme ce qui suit

Une simple déclaration type:

type OBJECT_STRUCTURE = { bar: string, baz: boolean, idk: number }

Plus: https://basarat.gitbooks.io/TypeScript/content/docs/types/type-system.html

3
basarat

Une solution vraiment native pour TS est - déclarer l'interface

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

Et cela pourrait être facilement réutilisé partout, sans le redéclarer

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

ou

other(obj: IMyObject) { ... }
2
Radim Köhler