web-dev-qa-db-ja.com

TypeScriptは、後で使用するためにオブジェクト構造を定義します

パラメーター型として使用できるTypeScriptのオブジェクト構造を定義することは可能ですか?

私が意味したのは:
私は(言いましょう)のように同じオブジェクト構造を返す5つの関数を持っています:

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

これに関する問題は、このようなオブジェクトを返すすべての関数でこの構造を定義する必要があることです。

だから、次のようなことをすることは可能ですか?

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

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

interface を使用できます。

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

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

遊び場のコード

または type alias

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

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

遊び場のコード

20
Nitzan Tomer

だから、次のようなことをすることは可能ですか

単純なtype宣言:

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

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

3
basarat

TSの本当にネイティブなソリューションは-インターフェイスを宣言することです

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

そして、再宣言することなく、どこでも簡単に再利用できます。

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

または

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