Typescript 是否可以从另一种类型的对象创建一种类型的对象,该对象具有相同的键名,但其值的类型不同?
我有一个函数what接受config对象,并应返回另一个具有相同属性名但属性值不同的对象:Typescript 是否可以从另一种类型的对象创建一种类型的对象,该对象具有相同的键名,但其值的类型不同?,typescript,types,Typescript,Types,我有一个函数what接受config对象,并应返回另一个具有相同属性名但属性值不同的对象: function generateTextures(config: { default?: boolean, multiply?: boolean, dark?: boolean } = {default: true, multiply: true, dark: true}) { const textures : {[key: string]: []} = {}; // I
function generateTextures(config: {
default?: boolean,
multiply?: boolean,
dark?: boolean
} = {default: true, multiply: true, dark: true}) {
const textures : {[key: string]: []} = {}; // I want this object type have the same properties as config, but with type [] without duplicating all properties
const textures : { // Like this, but without write keys names again and change types.
default?: [],
multiply?: [],
dark?: []
} = {};
do something...
return textures;
}
有可能吗?谢谢 是的,这是可能的;你想使用一个类似这样的
const textures: { [K in keyof typeof config]: [] } = {};
在这里,您正在映射typetypeof config
中的键(这样可以避免再次写出该类型)。如果检查纹理的类型
,它将是:
/* const textures: {
default?: [] | undefined;
multiply?: [] | undefined;
dark?: [] | undefined;
} */
如所愿。好吧,希望这会有帮助;祝你好运
考虑编辑代码以构成一个可以放入独立IDE的IDE,以演示您在没有任何打字错误、无关代码或无关错误的情况下所做的工作(例如,
type
为什么在那里?是否希望const textures={…}
或const textures:{…}
?)。如果我调用generateTextures({})
,那么textures
应该是什么类型?满足您的需要吗?如果是这样,我会写下来;如果没有,请在问题中添加适当的详细信息。@jcalz抱歉,错误的解释是,我只需要具有具有相同键名称的此对象的类型,但键的值必须是[]而不是布尔值,以避免复制具有相同键的所有对象类型并更改此键的值类型。谢谢!