Typescript 是否可以从另一种类型的对象创建一种类型的对象,该对象具有相同的键名,但其值的类型不同?

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

我有一个函数what接受config对象,并应返回另一个具有相同属性名但属性值不同的对象:

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]: [] } = {};
在这里,您正在映射type
typeof config
中的键(这样可以避免再次写出该类型)。如果检查
纹理的类型
,它将是:

/* const textures: {
    default?: [] | undefined;
    multiply?: [] | undefined;
    dark?: [] | undefined;
} */
如所愿。好吧,希望这会有帮助;祝你好运


考虑编辑代码以构成一个可以放入独立IDE的IDE,以演示您在没有任何打字错误、无关代码或无关错误的情况下所做的工作(例如,
type
为什么在那里?是否希望
const textures={…}
const textures:{…}
?)。如果我调用
generateTextures({})
,那么
textures
应该是什么类型?满足您的需要吗?如果是这样,我会写下来;如果没有,请在问题中添加适当的详细信息。@jcalz抱歉,错误的解释是,我只需要具有具有相同键名称的此对象的类型,但键的值必须是[]而不是布尔值,以避免复制具有相同键的所有对象类型并更改此键的值类型。谢谢!