This issue comes out of #1227 and has one example of the suggestion to use discriminated unions in the draft PR #1228 (in this commit specifically).
Discriminated union types let us more accurately model certain kinds of either/or and hierarchical constraints. This article is one example goes into more detail about what this is and how to use it.
➜ ack discrim src
src/message-attachments.ts
4:// TODO: breaking changes, use discriminated union for `fallback`, `text` and `block` properties, maybe LegacyAttachment
7:// also further nested discriminated union types that could be helpful here:
src/block-kit/blocks.ts
250:// TODO: breaking change: use a discriminative union to represent section block using `text` or `fields` but
src/block-kit/block-elements.ts
283: // TODO: breaking change: use discriminative union and separate types for static select of options vs. option groups
289: // TODO: breaking change: use discriminative union and separate types for static select of options vs. option groups
297: // options, whereas the below doesn't. Also use a discriminative union here to separate option vs. option groups
324: // TODO: breaking change: use discriminative union and separate types for static select of options vs. option groups
330: // TODO: breaking change: use discriminative union and separate types for static select of options vs. option groups
338: // options, whereas the below doesn't. Also use a discriminative union here to separate option vs. option groups
399:// TODO: breaking change: maybe can use a discriminative union to differentiate between a multi-select convo element
This issue comes out of #1227 and has one example of the suggestion to use discriminated unions in the draft PR #1228 (in this commit specifically).
Discriminated union types let us more accurately model certain kinds of either/or and hierarchical constraints. This article is one example goes into more detail about what this is and how to use it.
We also already use it extensively in the
web-api
package to model certain API request parameter constraints. The classic example where discriminated unions are useful within Slack is when modeling the parameters for thechat.postMessage
method. This method requires one oftext
,blocks
orattachments
to be present - and with a discriminated union we model this constraint accurately!Discriminated Union Usage Areas