type TypeMapping = { Boolean: boolean; String: string; Number: number; Integer: number; }; export declare enum Type { Boolean = "Boolean", String = "String", Number = "Number", Integer = "Integer" } export interface ElemType { name: string; type: keyof TypeMapping; } export declare const asOptions: (t: T) => T; export type OptionsToType> = { [K in T[number]['name']]: TypeMapping[Extract['type']]; }; export declare class Foo> { bar: T; baz: OptionsToType; constructor(t: T); add(t: ElemType): void; } export {};