I ended up here from this [typescript issue.](https://github.com/microsoft/TypeScript/issues/1213) and think this library might solve the problem I'm running into. I'm trying to create an library interface where a generic function can be passed in and the type basically resolved from a different context: Hopefully this [Typescript-Playground](https://www.typescriptlang.org/play?jsx=0#code/JYWwDg9gTgLgBAbzgFQJ5gKYBo4EMxgA2qOAgnAL5wBmUEIcA5LRhgLQzoYDOjAUH06Y4AIQzVoGABK4AdgBNCGKAB4AShgCOAVx4wcAeW0wwxgHxwAvHAAUULQC44GnXoCUVi0ZPGA3AKEMOFIwYBUABTgMAA8YDAVuZwwAY2h5FW4YKGBZAHMcDVSodMzsvJwEe1dMpzkSOHtuSFluDFrZVAozMxwRKNj4+USxCXsZBSVVOpw67qtEPjg4ACNxSScRfyX8YCcERaW4AG0wXBgACzgcuABrDFQIajhwgF09g8PjkAwLiHkr2S3e6PZ4nM7nF5vWwfT6HKpOcJgi4vI7fX7yFGMKq6TKMF44GGwlZrexODQwbRQWRoTAqEQWOAAekZyTkNHs7ECiVWcG0rX+52UQRgEDg3HoGHOEAA7nAAET4IioOWg07I1E-KUYo5YrQ4mB4vCJC5BEaScaKZQA0wwAD8hMOHksFkRaohGvRmMazVahphFAOAYDAS4z3BiWs+yWjEZdGMGEY70+uR+ewaer0ewkECcpRyuQoOG9EBabTFWXzlC2lD4wfkKUIuHsNG0smSMGAJbgADdcIRgPIzkF1BnMmY7I4ktUYG4073+4O4vIyaP4BR-HxUi14DsnCEwuFwzhAiD5wOhxZIwdVqMy2fF9gDruFp85bGIPG5UnYSmYE4J5oOA3pIToWFGRLEreAB095Dv8TKMnAgRilK2iEP8PIILBS5ZhAOblmUBZUDYuCJMATzYRg8gAR40qkQ0rZuAIEHphSVK2MBzb0XUbgwX255LlB2YOgGnyiTWFBAA) isn't too hard to follow. Sorry for such a direct question, please close/delete if this isn't appropriate.