export interface IConstructorOf < T > { new ( ... args ) : T ; } export interface IMapOf < T > { [ key ] : T ; } export type Nullable < T > = { [ K in keyof T ] ? : T [ K ] | null ; } ; export function getValue < T , K extends keyof T > ( obj , key ) { return obj [ key ] ; } export interface IDictionary < T > { [ index ] : T ; } export interface INumericDictionary < T > { [ index ] : T ; }