javascript - 映射类型 : set key as an object

标签 javascript typescript

我仍在尝试了解映射类型,因此我想要实现的是如下所示的项目配置:

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
}

当我这样做时,它说db是一个字符串,它应该是一个对象(connAconnB 在本例中)

最佳答案

据我了解,您并不是在寻找映射类型。您正在寻找索引签名

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
   }
}

关于javascript - 映射类型 : set key as an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680210/

相关文章:

javascript - php 从 action 开始工作,而不是从 html 形式的 onSubmit 开始工作

javascript - 语法错误 : "Unexpected token <" in Web Console

Angular/Typescript 在接口(interface)中从蛇形大小写转换为驼峰大小写

javascript - 如何在 Typescript 中检查字符串是否为数字/浮点?

javascript - Angular2 应用程序一半使用 Typescript 和 Javascript

javascript - Cytoscape.js:如何将节点颜色/形状/大小导出到 json?

javascript - 使用 HTML 显示表格

javascript - 如何通过键将数组转换为对象?

javascript - 从结构指令向父组件发射事件不起作用

reactjs - 即使类型正确, typescript 也会因类型错误而抛出错误