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

Привет ts-сообществу! У меня следующий вопрос: Есть код наподобие такого: ‘’’ function someFunc(A:

ObjUnion, someIndex: LiteralTypeUnion) {
return A[someIndex];
}
‘’’
Первый аргумент - юнион объектов с разными полями, часть общие, часть различаются.
Второй аргумент - юнион из литерал типов, которые являются ключами объектов из первого аргумента.


При попытке обратиться к индексу таким образом как в теле функции, ts ругается на то, что в части объектов из юниона такое поле отсутствует.


Как лучше поступить в такой ситуации? Пока приходит в голову только использование чего то вроде паттерна null-object, где для всех объектов из юниона определяем одинаковый набор полей, просто там, где они не нужны, указываем тип undefined или never, но может есть ещё какие то хорошие практики?

2 ответов

4 просмотра

typeguard?

не совсем понял чего ты собственно добиться хочешь

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Всем привет, после Си стоит учить плюсы или лучше на раст перейти?
Linus
8
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
Карта сайта