Обновить
0
0
Евгений@arswarog

Full-stack js разработчик

Отправить сообщение
Я хочу создать объект, который описывает как должно быть замаплено.
Объект именно потому что несколько таких объектов можно потом склеить, в специфике этого приложения это крутая фича.
И мне интересно, может ли его валидность проверить сам TS.
А про функцию — задача эта уже решена, но хотелось бы ее решить красиво.
Магия TS мне очень нравится. Однако разбираться и разбираться в ней.
Например, попробовал сделать маппер, с полной поддержкой TS
interface MyMapper<F, T, TK extends keyof T> {
    field: keyof F;
    map: IMapScheme<F, T[TK]>; 
}

type IMapScheme<F, T> = {
    [TK in keyof T]: keyof F | MyMapper<F, T, TK>;
};

interface From {
    _id: string;
    name: string;
    data: {
        foo: string;
        bar: string;
    };
}

interface To {
    id: string;
    name: string;
    meta: {
        fooData: string;
    };
}

const Try1Scheme: IMapScheme<From, To> = {
    id  : '_id',
    name: 'name',
    meta: {
        field: 'data',
        map  : {
            fooData: 'foo',
        },
    },
};


И очень просится написать что-то на подобии
interface MyMapper<F, T, TK extends keyof T> {
    field: keyof F;
    map: IMapScheme<F[this.field], T[TK]>; 
}


Такая магия возможна?
Значит ли это, что TypeScript имеет больше шансов обогнать по производительности код, изначально написанный на JavaScript?

Информация

В рейтинге
Не участвует
Откуда
Краснодар, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность