publishers: Record<string, { apiKeys: string[] }> }
Я пикаю из интерфейса в переменную
const items: Pick<AccountInfo, 'publishers'> = account.publishers
Потом делаю вот такую обработку
return Object.entries(items).map(([key, value]) => ({
id: key,
apiKey: value.apiKeys[0],
}));
Т.е. преобразовываю record в массив [key, value] и нормализирую
Но тс видимо не понимает что Object.entries на record-е вернет массив из [key, value], и пишет мне о том, что нужно писать не value.apiKeys[0], а value.apiKeys.apiKeys[0]. Может есть что-то очевидное что я просто не прочитал?) Потому что код работает отлично, е*усь только с тайпскриптом
когда ты делаешь Pick, то тс соорудит для тебя новый shape. В твоем случае ты не асайнишь тип из account.publishers в items, а создаешь новый тип, в который ты помещаешь ключ publishers из AccountInfo. Используй typeof: https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgIIIQewK7gJIgybIDeAUMpcgA7YBGANsAM4AW0zAXMgEoRZQAJgB5mYKKADmAGlLI41YAGkIATy7IxEkJIDaAXWQBfAHxkjZMlhBj5GHOG7osuMASLIAvKQpVajFnYoDXIqMOQAIkwQCAjuUPDEhWU1DV0IgEYI2QiAJmzIgGYI-V9EizCLCyto22BIAFsNMFVqCEwYOxdwADp-JjYOLy6HMD76AaDmAG4gA
Спасибо за объяснение! А если ts теперь говорит что value это unknown, хотя там четко указано что это { apiKeys: string[] } и apiKeys не optional свойство?
Воспроизвести можешь? А то у меня все нормально в плейграунде: https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgIIIQewK7gJIgybIDeAUMpcgA7YBGANsAM4AW0zAXMgEoRZQAJgB5mYKKADmAGlLI41YAGkIATy7IxEkJIDaAXWQBfAHxkjZMlhBj5GHOG7osuMASLIAvKQpVajFnYoDXIqMOQAIkwQCAjuUPDEhWU1DV0IgEYI2QiAJmzIgGYI-V9EizCLCyto22BIAFsNMFVqCEwYOxdwADp-JjYOLy6HMD76AaDmAG5La1tBODA4YYB5OgArfjGIcAkIZgAKeogmgEoehoVDw90AazVZADc4BmwIfTOvE2RDhOBBNwHqppL5kipVNwXm8ID1waldAAGfSgoxnM6zIA
В плейграунде всё отлично, и вправду У меня просто помимо всего используется Vue’s computed, но я все типы по их доке прописываю. Такое ощущение, что они как-то влияют -_-
так а зачем ты указал value? со знаком вопроса?
То я видимо случайно, там знак вопроса не нужен от слова совсем Но это ничего не изменило
тебе пишет просто что value unknown или еще что-то?
убери знак вопроса когда асайнишь данные в items
Та убирал уже, не в этом дело, увы
Обсуждают сегодня