Установить тип для члена класса в подтип общего параметра - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть этот класс:

export class Route <Req = any, Res = any, ReqBody = any, ResBody = any>{

  requestClass: Req;
  responseClass: Res;
  requestBodyClass: ReqBody;
  responseBodyClass: ResBody;

  constructor(){

  }

  setRequestType(v: Req): Req {
    this.requestClass = v;
    return v;
  }

  setResponseType(v: Res): Res{
    this.responseClass = v;
    return v;
  }

  setResponseBodyType(s: ResBody): ResBody {
    this.responseBodyClass = s;
    return s;
  }

  setRequestBodyType(s: ReqBody): ReqBody {
    this.requestBodyClass = s;
    return s;
  }

}

мой вопрос - есть ли способ сделать что-то вроде этого:

  requestClass: Req;
  responseClass: Res;
  requestBodyClass: ReqBody !== any ? ReqBody : Req['body'];
  responseBodyClass: ResBody !== any ? ResBody : Res['body'];

кажется маловероятным, что я могу сделать что-то подобное, ноесли пользователь не передает тип для ReqBody или ResBody, я хочу по умолчанию установить значение body в Req или Res, если это имеет смысл.

...