https://tsplay.dev/wQaeYw
function test<T extends string>(arr: T[], callback: (get: (key: T) => string) => void): Promise<void> { return Promise.resolve(); } test(['a', 'b', 'c'], (get) => { get('a'); //works get('d'); // compiler failure });