Javascript 是否有方法转换地图<;K、 V>;类型到对象类型?
比如说,我有:Javascript 是否有方法转换地图<;K、 V>;类型到对象类型?,javascript,typescript,Javascript,Typescript,比如说,我有: const keys = ["name","age"] as const; type values = [string, number]; const obj : Object<keys,values> = { name : "foo", age : 20 } // as Map<keys,values> valid ! const obj2 : Object<keys,valu
const keys = ["name","age"] as const;
type values = [string, number];
const obj : Object<keys,values> = {
name : "foo", age : 20
} // as Map<keys,values> valid !
const obj2 : Object<keys,values> = {
name : "foo"
} // as Map<keys,values> error, age is missing!
const obj3 : Object<keys,values> = {
name : "foo", age : null
} // as Map<keys,values> error, age is not a number!
const key=[“name”,“age”]作为常量;
类型值=[字符串,数字];
常量对象:对象={
姓名:“富”,年龄:20岁
}//作为有效地图!
常量obj2:对象={
姓名:“富”
}//由于映射错误,缺少年龄!
常量obj3:对象={
姓名:“foo”,年龄:空
}//由于映射错误,年龄不是数字!
我想从键和值数组创建一个对象类型。我该怎么做?这里有两个问题:
对象
类型不是您想要的类型Map
对象,尽管它们都继承自对象原型
// Define correct type for your object
type MyObject = {
'name': string;
'age': number;
}
const obj: MyObject = {
name: "foo",
age: 20
}
// Create Map from object
const map = new Map(Object.entries(obj));
现在,map
自动推断为粘贴自的map
副本
type key=['name','age']
类型值=[字符串,数字]
类型ZipTuple={
[K in keyof T]:[T[K],K扩展了U的keyof?U[K]:从不]
}
类型KeyValTuplesToObject=ZipTuple<
K
v
>[number]扩展推断Z
? [Z] 扩展[[任何,任何]]
? {[P in Z[0]]:提取[1]}
:从不
:从不
类型Obj=KeyValTuplesToObject
常量对象:对象={
名称:“foo”,
年龄:20
}//作为有效地图!
常量obj2:Obj={
姓名:“富”
}//由于映射错误,缺少年龄!
常量obj3:Obj={
名称:“foo”,
年龄:零
}//由于映射错误,年龄不是数字!
没有值数组您想要一个映射
还是一个记录
?@Bergi一个记录