如何声明另一个接口类型的可迭代对象?

时间:2016-11-06 01:40:25

标签: typescript

所以,我在这里尝试创建Object的接口类型,其中只包含特定的接口。例如:

export interface IUser {
  name: string;
  last: string;
};

export interface IRoom {
  users: Object<IUser>; // this is wrong.
}

我期待用户会像:

Users: {
  'user_id_goes_here': {
    name: 'John',
    last: 'Doe'
  },
  'user_id_goes_here': {
    name: 'Albert',
    last: 'Einstein'
  },
  ...
}

有没有办法像这样定义接口成员类型?

1 个答案:

答案 0 :(得分:3)

我想你想要这样的东西:

export interface Room {
    users: UserMap;
}

export interface UserMap {
    [userId: string]: User;
}

export interface User {
    name: string;
    last: string;
}    

[userId: string]: IUser;字符串索引签名。这意味着每当您使用字符串索引到UserMap时,您将获得IUser