microsoft / microsoft/typespec
[TCGC] Support Discriminated Unions in all client emitters
- Dominant language
- Java
- Stars
- 5.9k
- Forks
- 394
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 104
Description
### Clear and concise description of the problem
Unions can be marked as discriminated using the `@discriminated` decorator. however, all the existing emitters haven't support this features.
We need to support Discriminated Unions
This issue is created to decide how we could support Discriminated Unions in TCGC.
Default serialization
```
@discriminated
union Pet {
cat: Cat,
dog: Dog,
}
```
Serialize as
```
{
"kind": "cat",
"value": {
"name": "Whiskers",
"meow": true
}
}
// or
{
"kind": "dog",
"value": {
"name": "Rex",
"bark": false
}
}
```
### Checklist
- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Read the [docs](https://typespec.io/docs/).
- [x] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
Contributor guide
Assessment
This issue has not been assessed yet.