是否可以在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 { ... }
...
答案 0 :(得分:20)
您可以使用interface:
interface MyType {
bar: string;
baz: boolean;
idk: number;
}
function foo(): MyType {
return {
bar: "bar",
baz: true,
idk: 4
};
}
type MyType = {
bar: string;
baz: boolean;
idk: number;
}
function foo(): MyType {
return {
bar: "bar",
baz: true,
idk: 4
};
}
答案 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) { ... }