https://www.typescriptlang.org/play?#code/C4TwDgpgBAYgrgOwMbAJYHsEAUCGAnHAWwGcoBeKAbwCgooAzddALitrqkJADV9WE4hAEYQ8AbnYBfCXSF82HTj3nFgeVAgDmMqNPZyAXqwBKEJOjwATADyr1WgDRQBw0QD4Je6qEixEKDAQAOSJoCgBrCBB0ej9kNExcAhIJampLMwAbfGhzBFUoYggES1MARzgIVVYACgA6BvxNYlYcBBAAbQBdAEpyNyg2kFT6fwSEKCQcTMz4eMDrABUoCAAPYGLLUjmAzBDCCDca9noEVkWHdjB8Iha43ewbkg7FrsumjoikvLK1RrTk5rsliD1PKkpjMduMagByRjoWFOT5KXh4Viw4AAC1QpGIWPQcEylgYOFQmSRUAA9FSAEIAeXpAFkAITUSRgoA https://typeofnan.dev/how-to-make-one-function-argument-dependent-on-another-in-typescript/