Можно ли создать тип объекта из объекта другого типа с теми же именами ключей, но с разными типами их значений? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть функция, которая принимает объект конфигурации и должна возвращать другой объект с такими же именами свойств, но с разными значениями:

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;
}

Возможно ли это сделать? Спасибо!

1 Ответ

1 голос
/ 29 апреля 2020

Да, это возможно; вы хотите использовать сопоставленный тип , например:

const textures: { [K in keyof typeof config]: [] } = {};

Здесь вы сопоставляете ключи типа typeof config (что избавляет вас от повторного ввода типа ). Если вы изучите тип textures, это будет:

/* const textures: {
    default?: [] | undefined;
    multiply?: [] | undefined;
    dark?: [] | undefined;
} */

по желанию. Хорошо, надеюсь, это поможет; удачи!

Детская площадка ссылка на код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...