void>(
connections: {read?: boolean, write?: boolean},
action: typeof connections extends {read: true, write: true} ? TwoClientsAction<T> : OneClientAction<T>,
) {
.
.
.
const result = await (stableConnections.length === 1
? action(stableConnections[0])
: (action as TwoClientsAction<T>)(stableConnections[0], stableConnections[1])
);
.
.
.
}
```
и следующие типы:
```
type RedisClient = RedisClientType<RedisModules, RedisScripts>
type OneClientAction<T> = (client: RedisClient) => Promise<T>
type TwoClientsAction<T> = (client: RedisClient, client2: RedisClient) => Promise<T>
```
почему-то с точки зрения ТС функция action может иметь только один агрумент, хотя у нее Conditional Type, и только при явном касте в тип она без ошибок принимает второй.
Подскажите, пожалуйста, как мне написать тип так, чтобы этот каст не требовался, если это возможно
1) Тип connections вынести в дженерик 2) Проверка внутри функции неверная, должно проверяться то же условие что в типах
Юрий, спасибо! а можно подробнее, пожалуйста? не уверен, что понял
https://www.typescriptlang.org/play?target=99&jsx=0#code/C4TwDgpgBAShAmBLAzgYQDaIgO2FAvFNgK4C2ARhAE4DcAUHQMYD22ye7AhuehKq9giNgiVsgBcsBCgxZcAbQC6BKPICMAGigAmLQGZF9OhAAeYZlTws2eAO6JgACzhI0AoSNYrOyENkZQADwAKlCmwDjwyFAA3lBUEJzwAPyS5MzMvJzYNFC2VA4QqVDpmYnYUAC+AHwAFHRQjVDWgsKibJLBGg1NnG2snWEmEdhRsfGJ8JLAVMQQufmF07PQlVDJUMG2zLI4wMgAgv0VkgDygru4R57Y3QCUBNWxPY3W7BPIxOh4hJy2nA4oLUWh52sgAHQJJJQABkMOa7mOEMWEReTUaG1qfRuUB8m22l3213ad1qXB4fERN2Q8gADIotOTePxsK1qepFHc0ejJNj2mTgNxmVSwXTOWi7vRKgxQJAoOc+Jg9sSvIRgUrcJIXDINcAHvgngAFKjMUgoCCBbIgap0WXQLY7XWHY4qdVyYBa6RoXVaRi67Se1yE-VGk1m5AWq3VIA
Обсуждают сегодня