-
Notifications
You must be signed in to change notification settings - Fork 674
types 3.0: discriminated union types where appropriate #1816
Copy link
Copy link
Open
Labels
area:typescriptissues that specifically impact using the package from typescript projectsissues that specifically impact using the package from typescript projectsauto-triage-skipdiscussionM-T: An issue where more input is needed to reach a decisionM-T: An issue where more input is needed to reach a decisionpkg:typesapplies to `@slack/types`applies to `@slack/types`semver:major
Milestone
Metadata
Metadata
Assignees
Labels
area:typescriptissues that specifically impact using the package from typescript projectsissues that specifically impact using the package from typescript projectsauto-triage-skipdiscussionM-T: An issue where more input is needed to reach a decisionM-T: An issue where more input is needed to reach a decisionpkg:typesapplies to `@slack/types`applies to `@slack/types`semver:major
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-apipackage to model certain API request parameter constraints. The classic example where discriminated unions are useful within Slack is when modeling the parameters for thechat.postMessagemethod. This method requires one oftext,blocksorattachmentsto be present - and with a discriminated union we model this constraint accurately!Discriminated Union Usage Areas