我仍然试图了解maped类型,所以我想要实现的是这样的项目配置:
let config = {
connA: {
host: 'abc123',
user: 'abc123',
password: 'abc123',
database: 'abc123',
},
connB: {
host: 'abc123',
user: 'abc123',
password: 'abc123',
database: 'abc123',
}
}
我想为密钥connA
,connB
等设置一个类型,其中可以是任何内容。
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
是string
,并且在此示例中应为object
(connA
或connB
)
答案 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
}
}