169 похожих чатов

Подскажите плиз почему ругается и как исправить? async function testWithGettersAsync<

G extends ((...args: any[]) => Promise<any>)[] | Record<PropertyKey, (...args: any[]) => Promise<any>>,
>(func: (getter: G extends any[] ? G[number] : G[keyof G], type: string) => Promise<any>, getters: G) {
if (Array.isArray(getters)) {
for (let idx = 0; idx < getters.length; idx++) {
await func(getters[idx], `value_${idx}`);
}
} else {
const entries = Object.entries(getters);

for (let idx = 0; idx < entries.length; idx++) {
await func(entries[idx][1], entries[idx][0]);
}
}
}


Ругается на первый параметр func. Хочется внутри func понимать, какие могут быть значения возвращены из getter

Playground

13 ответов

10 просмотров

playground

Кирилл-Глазунов Автор вопроса
rnamod1
playground

это не то, что нужно - так внутри func getter всегда будет возвращать Promise<any>, а не то, что в getters

Кирилл Глазунов
это не то, что нужно - так внутри func getter всег...

посмотри внимательнее, ты же хочешь func вызвать с тем что внутри getters, а это (...args: any[]) => Promise<any>

Кирилл-Глазунов Автор вопроса
rnamod1
посмотри внимательнее, ты же хочешь func вызвать с...

play вот что нужно было Вопрос ко всем: если в плейграунде убрать проверку на isFunction, начинает ругаться, если при этом из типа func убрать возвращаемый Promise - перестает ругаться (но промис нужен мне). Я решил тем, что в гварде isFunction поставил is Promise<any>, но я не понимаю, почему он ругается вообще

Кирилл-Глазунов Автор вопроса

Тип func определен: и параметры и результат, почему без гварда ругается? (Я его вообще для рантайма добавил...)

Кирилл Глазунов
Тип func определен: и параметры и результат, почем...

Argument of type 'PromiseFunc' is not assignable to parameter of type 'G extends any[] ? G[number] : ValueOf<G>' там же ошибка написана

Кирилл-Глазунов Автор вопроса
Владимир Акимов
Argument of type 'PromiseFunc' is not assignable t...

Написана, но G подчиняется ограничениям из generic: и G[number], и ValueOf<G> и равны PromiseFunc. И непонятно, почему проверка func на возвращаемый промисс убирает ошибку

Кирилл Глазунов
Написана, но G подчиняется ограничениям из generic...

аргумент func имеет тип G extends any[] ? G[number] : ValueOf<G> по коду ты туда передаешь PromiseFunc что должен сделать компилятор ?

Кирилл-Глазунов Автор вопроса

Оба выхода из тернарника дают PromiseFunk; более того, в ошибке, он из этого тернарника и определился (явно PromiseFunk нигде не передается, только в G

Кирилл-Глазунов Автор вопроса

Хм, т.е. аргументы func теперь ...args:any[]? В этом есть смысл

Кирилл-Глазунов Автор вопроса
Кирилл Глазунов
Хм, т.е. аргументы func теперь ...args:any[]? В эт...

Интересно то, что внутри func передаваемые типы getter определяются правильно (из фактически переданных вторым параметром в первую функцию)

Кирилл Глазунов
Оба выхода из тернарника дают PromiseFunk; более т...

не важно что дают оба выхода, ты тип описал для инстанса а не для реализации, декларация типа и реализация это 2 разных вещи и ТС не нацелен смотреть что написано у тебя в коде, можно попробовать написать обратный сопоставленный тип, но это займет много времени и совсем не нужно, больше как академическая задача

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
Карта сайта