All streams
Search
Write a publication
Pull to refresh
0
0
Евгений @arswarog

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

Send message
Я хочу создать объект, который описывает как должно быть замаплено.
Объект именно потому что несколько таких объектов можно потом склеить, в специфике этого приложения это крутая фича.
И мне интересно, может ли его валидность проверить сам 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?

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity