see https see https export interface ISessionService < T > { param key return get < K extends keyof T > ( key ) : Promise < T [ typeof key ] | undefined > ; return get ( ) : Promise < T | undefined > ; param key param data return set < K extends keyof T > ( key , value ) : Promise < boolean > ; param value return set ( value ) : Promise < boolean > ; }