Let's have TypeScript function for sending emails:
enum ETemplate {
EXAMPLE1, EXAMPLE2
}
function sendEmail(to: string, template: ETemplate, params: IParams): Promise<void>{
await this.mailService.send(to, template, params);
}
interface IParams {
// depends on template type (ETemplate)
}
How to require params depending on template type I entered? Reason why is because every template have different IParams based on ETemplate.
I know TypeScript have generics but I am not sure if I can achieve this with them...