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

Привет, подскажите пожалуйста, хочу сделать функцию, которая принимает объект и

изменяет его поля(сбрасывает), столкнулся с проблемой, что получаю ошибку мол Type 'string' is not assignable to type 'T[keyof T]'.
'T[keyof T]' could be instantiated with an arbitrary type which could be unrelated to 'string'.ts(2322)
Я то вроде смысл ошибки понимаю, но как ее решить?
export const resetAllFields = <T extends object>(obj: T) => {
Object.keys(obj).forEach((key) => {
if (typeof obj[key as keyof T] === 'string') {
obj[key as keyof T] = ''; <=== Error
}
});
return obj;
};

20 ответов

21 просмотр

Я человек простой - вижу forEach с return - ставлю минус

А зачем obj[key as keyof T], почему просто obj[key]?

Anton- Автор вопроса
Vadim
А зачем obj[key as keyof T], почему просто obj[key...

если просто тогда вот так: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{}'. No index signature with a parameter of type 'string' was found on type '{}'

object замени на Record<string, any>

И после - можешь удалить if условия

Anton- Автор вопроса

Да, так и сделал, спасибо

Ууууу, как же мне не нравится это. Лучше бы возвращал новый объект...

Идель Гатауллин
Ууууу, как же мне не нравится это. Лучше бы возвра...

return obj если добавить, то вернет указатель на тот же объект

Идель Гатауллин
Ууууу, как же мне не нравится это. Лучше бы возвра...

Я понял, тебе лишь бы сказать, чё не нравится))0)

Идель Гатауллин
Object.fromEntries юзаешь после keys и нет проблем

Как лексему крутить мне всё равно, особенно с учетом инвариантов

Идель Гатауллин
Ууууу, как же мне не нравится это. Лучше бы возвра...

зачем? Может нужно очистить переданный объект, а не возваращать новый

kayr Султанбек
зачем? Может нужно очистить переданный объект, а н...

Например при дебаге такое будет работать в минус. Ибо нужна повторяемость процесса, а иначе - удачи ловить ошибки

kayr Султанбек
зачем? Может нужно очистить переданный объект, а н...

Даже обновленное апи на js выкатили - toSorted, toSpiced, toReversed, with

kayr Султанбек
зачем? Может нужно очистить переданный объект, а н...

Тем что мутировать аргументы функции это потенциальная дыра для багов.

Идель Гатауллин
object замени на Record<string, any>

Можно ещё вместе string юзнуть встроенный alias - PropertyKey

Эдмон
Можно ещё вместе string юзнуть встроенный alias - ...

Можно, но если только стринговые ключи(какие очень часто), лучше лишний раз ограничить. Надо будет - расширит

Эдмон
Можно ещё вместе string юзнуть встроенный alias - ...

Смысла нет, эти две записи идентичны.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта