// import session from "express-session"; export class SessionData{ // implements session.SessionData{ [key:string]:any // public cookie: session.Cookie; public cookie: any; } export abstract class RequestSession { public readonly id?: string; public session?: SessionData; //@ts-ignore public constructor(target:any) { //사용자 session 할당 시 if(target instanceof RequestSession) { this.id = target.id this.session = target.session; } else // request에서 추출시 { this.id = target.sessionID this.session = target.session; } this.setData(); } public setSession(key:string, value:any) { let target:any = Object.defineProperty(this, key, { get() { if(!this.session) return undefined; return this.session[key] }, set(_value) { if(!this.session) return; this.session[key] = _value }, enumerable: true, configurable: true, }); target[key] = value; } public assignSessionObject(param:any) { if(!param) return; // for(let i = 0, element ; element = sumPickingListPrintList["resultList"][i] ; i++) { let keys = Object.keys(param); if(!keys || keys.length < 1) return; keys = keys.filter((value:string)=>value != "constructor") for(let idx =0, key; idx < keys.length, key = keys[idx]; idx++) { // let key = keys[idx]; // let value = param[key]; this.setSession(key, param[key]) } } public abstract setData(...args:any[]):void ; }