interface Map {
    [key: string]: T;
}
let keys: keyof Map; // string
let value: Map['foo']; // number