TypeScript 5.8 BetaМожно выделить новую возможность - Conditional Type Checking.
Ее суть в том, что функция, в зависимости от своего аргумента, может определять возвращаемый тип.
type QuickPickReturn<S extends SelectionKind> = S extends SelectionKind.Multiple ? string[] : string;
async function showQuickPick<S extends SelectionKind>(
selectionKind: S,
): Promise<QuickPickReturn<S>> {
// ...
}
Пример
https://devblogs.microsoft.com/typescript/announcing-typescript-5-8-beta/