TypeScript定义对象结构供以后使用

时间:2016-08-17 07:40:14

标签: typescript declare

是否可以在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 { ... }
...

3 个答案:

答案 0 :(得分:20)

您可以使用interface

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

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

code in playground

type alias

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

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

code in playground

答案 1 :(得分:3)

  

所以可以做类似下面的事情

一个简单的type声明:

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

更多:https://basarat.gitbooks.io/typescript/content/docs/types/type-system.html

答案 2 :(得分:2)

TS的真正原生解决方案是 - 声明接口

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

这可以很容易地在任何地方重复使用,而无需重新声明

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

other(obj: IMyObject) { ... }