Похожие чаты

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 ответов

22 просмотра

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Карта сайта