Typescript genel türleri birden fazla yerde yeniden kullanılabilir mi?
Birden fazla yerde kullanmam gereken karmaşık bir generics kümesine sahip bir kodum var. Aynı generics'i birden fazla yerde yeniden kullanmanın bir yolu var mı? Yoksa bu örnekte tür tanımlarını basitleştirmenin başka iyi bir yolu var mı:
type OSD<T, V> = { [K in keyof T]?: V };
export interface CommandProps<
ReqQ extends OSD<ReqQ, string> | undefined,
ReqH extends OSD<ReqH, string> | undefined,
ReqB extends OSD<ReqB, unknown> | undefined,
ResH extends OSD<ResH, string> | undefined,
ResB extends OSD<ResB, unknown> | undefined,
> {
queryParametersSchema: ReqQ extends undefined ? undefined : Schema;
requestHeadersSchema: ReqH extends undefined ? undefined : Schema;
requestBodySchema: ReqB extends undefined ? undefined : Schema;
responseHeadersSchema: ResH extends undefined ? undefined : Schema;
responseBodySchema: ResB extends undefined ? undefined : Schema;
}
export default class Command<
ReqQ extends OSD<ReqQ, string> | undefined,
ReqH extends OSD<ReqH, string> | undefined,
ReqB extends OSD<ReqB, unknown> | undefined,
ResH extends OSD<ResH, string> | undefined,
ResB extends OSD<ResB, unknown> | undefined,
> {
readonly queryParametersSchema: ReqQ extends undefined ? undefined : Schema;
readonly requestHeadersSchema: ReqH extends undefined ? undefined : Schema;
readonly requestBodySchema: ReqB extends undefined ? undefined : Schema;
readonly responseHeadersSchema: ResH extends undefined ? undefined : Schema;
readonly responseBodySchema: ResB extends undefined ? undefined : Schema;
constructor(props: CommandProps<ReqQ, ReqH, ReqB, ResH, ResB>, queryParameters: ReqQ, requestHeaders: ReqH, requestBody: ReqB) {
this.queryParametersSchema = props.queryParametersSchema;
this.requestHeadersSchema = props.requestHeadersSchema;
this.requestBodySchema = props.requestBodySchema;
this.responseHeadersSchema = props.responseHeadersSchema;
this.responseBodySchema = props.responseBodySchema;
}
// ... Other methods that use all of these fields
}
Oyun alanı örneği