Похожие чаты

Anyways. If I have discriminated unions in TypeScript, how can I

make them narrow down to a single type using function maps?

Example:

type States = {
name: 'a',
someField: string
} | {
name: 'b',
otherField: boolean
}

const stateChange = (state: States) => {
const stateMap = {
a: () => state.someField,
b: () => state.otherField,
}
return stateMap[state.name]()
}

In the stateMap, TS doesn't know anymore that it was called with stateMap[state.name](). But with if and switch it works. I guess my fancy function maps do not work in this case. Otherwise I have to explicitly give the type for the function, maybe also not so bad.
Anyways, works perfectly with if and that is already great.

3 ответов

19 просмотров

You should be able to cast it more strictly if you find yourself fighting TS inference

Misan- Автор вопроса
Thomas
You should be able to cast it more strictly if you...

Makes sense. I just tried to put unions to a test after reading this article: https://blog.logrocket.com/put-the-typescript-enums-and-booleans-away/

https://www.typescriptlang.org/play?#code/C4TwDgpgBAysCGwIGcoF4oG8CwAoKBUAdvALYQBcUA5PNQDR6FTID25AYgJYQA2AJlWTAATlyIBzPAF8oAHyxNCJclWoAjBkoKtgACwgjufQVHWtWvCPCIy8eAMasiwlgiQBhPTYnQMACmFESlh3FABKdAA+RXxCJxdgN2CAWXgwdFjmZngqQLCqOGDUADIsYjIQ2mooaUi0GKCkADo2Th4BRjjsszymkKKkUvKVKs1a+saw5t0DIw7+LuZpbSgRCGAAVxEiZKQ0sABtfubRgF184Kh4VCIIADdDcIBuO1wgA

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Карта сайта