maped类型:将key设置为对象

时间:2017-12-06 17:32:33

标签: javascript typescript

我仍然试图了解maped类型,所以我想要实现的是这样的项目配置:

let config = {
    connA: {
      host: 'abc123',
      user: 'abc123',
      password: 'abc123',
      database: 'abc123',
    },
    connB: {
      host: 'abc123',
      user: 'abc123',
      password: 'abc123',
      database: 'abc123',
    }
}

我想为密钥connAconnB等设置一个类型,其中可以是任何内容。

export interface DatabaseConnection {
  host: string
  user: string
  password: string
  database: string
}

export type DatabaseConnections<T> = {
  [P in keyof T]: T[P]
}

所以,当我使用它时,它会是这样的:

public static connect(config: DatabaseConnections<DatabaseConnection>) {
for (let db in config) {
  db.host
}

当我执行此操作时,它表示dbstring,并且在此示例中应为objectconnAconnB

1 个答案:

答案 0 :(得分:1)

据我所知,你不是在寻找映射类型。您正在寻找索引签名

export type DatabaseConnections<T> = {
  [name: string]: T
}

public static connect(config: DatabaseConnections<DatabaseConnection>) {
   for (let db in config) {
      config[db] // this will be of type T
   }
}