Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

types 3.0: discriminated union types where appropriate #1816

Open
2 of 3 tasks
filmaj opened this issue Jun 13, 2024 · 0 comments
Open
2 of 3 tasks

types 3.0: discriminated union types where appropriate #1816

filmaj opened this issue Jun 13, 2024 · 0 comments
Labels
area:typescript issues that specifically impact using the package from typescript projects auto-triage-skip discussion M-T: An issue where more input is needed to reach a decision pkg:types applies to `@slack/types` semver:major

Comments

@filmaj
Copy link
Contributor

filmaj commented Jun 13, 2024

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 the chat.postMessage method. This method requires one of text, blocks or attachments to be present - and with a discriminated union we model this constraint accurately!

Discriminated Union Usage Areas

@filmaj filmaj added semver:major discussion M-T: An issue where more input is needed to reach a decision area:typescript issues that specifically impact using the package from typescript projects pkg:types applies to `@slack/types` auto-triage-skip labels Jun 13, 2024
@filmaj filmaj added this to the [email protected] milestone Jun 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:typescript issues that specifically impact using the package from typescript projects auto-triage-skip discussion M-T: An issue where more input is needed to reach a decision pkg:types applies to `@slack/types` semver:major
Projects
None yet
Development

No branches or pull requests

1 participant