【发布时间】:2021-05-14 02:28:49
【问题描述】:
这是我的代码:
type Bucket = {
[key:string]:Map<string,{data:any}>
}
现在我要做的是创建一个type,它可以让我通过密钥获得custom 数据。正如您在下面的代码中看到的,我想为每个键强烈键入 data 对象。我已经尝试在 Bucket 类型上使用通用对象,但这会将所有键锁定到相同的数据。
有没有办法为每个键设置不同的强类型 data?
const bucket:Bucket = {
a:new Map(),
b:new Map<string,{data:boolean}>()
}
bucket.a.set('a',{data:1})
bucket.b.set('b',{data:'b'}) // this should error
const getA = bucket.a.get('a') // data is any - should be inferred to number?
const getB = bucket.b.get('b') // data is any - should be boolean
【问题讨论】:
-
使用身份功能typescriptlang.org/play?#code/… 你仍然需要明确输入
a -
我打赌 10 美元,这些链接之一可能对您有帮助 stackoverflow.com/questions/65891135/… 和 stackoverflow.com/questions/65978153/…