MasatoDev / boostest

14 stars 0 forks source link

feat: support obj arg of class #22

Closed MasatoDev closed 2 months ago

MasatoDev commented 2 months ago

Done https://github.com/MasatoDev/boostest/issues/4.

type ObjKey = {
  obj_name: string;
  obj_val: number;
};

export class ArgObjClass {
  name: string;
  age: number;
  obj_key: ObjKey;
  obj_key2: ObjKey;

  constructor({ name, age, obj_key, obj_key2 }: { name: string; age: number; obj_key: ObjKey; obj_key2: ObjKey }) {
    this.name = name;
    this.age = age;
    this.obj_key = obj_key;
    this.obj_key2 = obj_key2;
  }
}
import { ArgObjClass } from './types/pattern/arg_obj_class';
let _ = boostestArgObjClass<typeof ArgObjClass>(ArgObjClass);

The above results are as follows.

export function boostestArgObjClass<T extends abstract new (...args: any) => any>(ArgObjClass): T {
    return new ArgObjClass({
        'name':'test string data',
        'age':10,
        'obj_key':object_obj_key_boostestArgObjClass(),
        'obj_key2':object_obj_key2_boostestArgObjClass()
    });
}
export function object_obj_key_boostestArgObjClass<T>(args?: Partial<T>): T {
    return ({
        'obj_name':'test string data',
        'obj_val':10,
        ...args
    } as T);
}
export function object_obj_key2_boostestArgObjClass<T>(args?: Partial<T>): T {
    return ({
        'obj_name':'test string data',
        'obj_val':10,
        ...args
    } as T);
}