带限制键的TypeScript字典
我想使用TypeScript创建一个字典类型,将字符串映射到对象。 我希望字符串的值限制如下带限制键的TypeScript字典,typescript,dictionary,Typescript,Dictionary,我想使用TypeScript创建一个字典类型,将字符串映射到对象。 我希望字符串的值限制如下 type Person={ id:字符串; 名称:字符串; 年龄:人数; } 类型字典yofpersonneedsfixing={ [IDshouldbereRestrictedToMatchPersonid:string]:个人; } let persons:DictionaryOfPersonNeedsFixing={ '1': { id:'1', 姓名:'约翰', 年龄:31 }, “错误ID”:
type Person={
id:字符串;
名称:字符串;
年龄:人数;
}
类型字典yofpersonneedsfixing={
[IDshouldbereRestrictedToMatchPersonid:string]:个人;
}
let persons:DictionaryOfPersonNeedsFixing={
'1': {
id:'1',
姓名:'约翰',
年龄:31
},
“错误ID”:{
id:'2',
名字:“吉姆”,
年龄:37
}
}
在上面的代码中,我希望TypeScript告诉我错误ID
不是允许的键,我们只能使用“2”作为键
或者另一种方式是,TypeScript应该告诉我id:'2'
是不允许的,并且id
应该设置为erroid
我已尝试更新Person
类型以限制id
,如下所示:
type Person={
id:K;
名称:字符串;
年龄:人数;
}
现在,我可以使用以下语法创建一个人,他的id
必须是'2'
:
让jim:Person={
id:'2',
名字:“吉姆”
年龄:37
}
在这里,如果我试图将id
字段设置为'2'
以外的任何值,就会出现一个错误
类似地,我可以更新Dictionary
对象,将密钥集限制为预定义集,如下所示:
type DictionaryOfPersonsWithRestrictedIds={
[id在'1'|'2'|'3'中]?:Person;
}
这样,TypeScript告诉我如果Person.id
与字典键不匹配,就会出现错误。例如
让PersonWithIncorrectKey:DictionaryOfPersonWithRestrictEdds={
'1': {
id:'1',
姓名:'约翰',
年龄:31
},
'ErrorId':{//我得到了整个对象的红色曲线,因为ErrorId不是允许的键
id:'2',
名字:“吉姆”,
年龄:37
}
}
let PersonWithIncorrectKey:DictionaryOfPersonWithRestrictedId={
'1': {
id:'1',
姓名:'约翰',
年龄:31
},
'2': {
id:'3',//由于预期为'2',我在id下得到一个红色的波形。
名字:“吉姆”,
年龄:37
}
}
我希望能够对任何id
执行此操作,而不仅仅是预定义的列表
我希望字典键与任何可能的id
的Person
id
字段匹配(即一致)
使用TypeScript类型/接口而不必编写自己的验证函数,这是否可行?是否适用于您?如果是的话,我会写一封信anwer@jcalz是的,是的!对你有用吗?如果是的话,我会写一封信anwer@jcalz是的,是的!