我仍在尝试了解映射类型,因此我想要实现的是如下所示的项目配置:
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
是一个字符串
,它应该是一个对象
(connA
或 connB
在本例中)
最佳答案
据我了解,您并不是在寻找映射类型。您正在寻找索引签名
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/