microsoft / microsoft/typespec

[TCGC] Support Discriminated Unions in all client emitters

Open
#8,455 20 comments 0 reactions 1 assignee Assigned to @tadelesh View on GitHub
emitter:client:all
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.