mirror of
https://github.com/foomo/foomo-docs.git
synced 2025-10-16 12:35:40 +00:00
feat: add union examples
This commit is contained in:
parent
4adfd2a2ed
commit
c2e8dc6327
@ -276,3 +276,87 @@ type Basic interface {
|
|||||||
### Union Types
|
### Union Types
|
||||||
|
|
||||||
When static types seem to be in the way
|
When static types seem to be in the way
|
||||||
|
|
||||||
|
#### Scalars
|
||||||
|
|
||||||
|
```go title="Go"
|
||||||
|
type (
|
||||||
|
Species struct {
|
||||||
|
LandAnimals *LandAnimals `json:"landAnimals,omitempty" gotsrpc:"union"`
|
||||||
|
WaterAnimals *WaterAnimals `json:"waterAnimals,omitempty" gotsrpc:"union"`
|
||||||
|
}
|
||||||
|
LandAnimals string
|
||||||
|
WaterAnimals string
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
Cat LandAnimals = "cat"
|
||||||
|
Dog LandAnimals = "dog"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
Catfish WaterAnimals = "catfish"
|
||||||
|
Dogfish WaterAnimals = "dogfish"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript title="TypeScript"
|
||||||
|
export enum WaterAnimals {
|
||||||
|
Catfish = "catfish",
|
||||||
|
Dogfish = "dogfish",
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum LandAnimals {
|
||||||
|
Cat = "cat",
|
||||||
|
Dog = "dog",
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Species = { ...github_com_foomo_gotsrpc_playground_server_services_wof.LandAnimals, ...github_com_foomo_gotsrpc_playground_server_services_wof.WaterAnimals }
|
||||||
|
export type Species = github_com_foomo_gotsrpc_playground_server_services_wof.LandAnimals | github_com_foomo_gotsrpc_playground_server_services_wof.WaterAnimals
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Structs
|
||||||
|
|
||||||
|
|
||||||
|
```go title="Go"
|
||||||
|
type (
|
||||||
|
Trip struct {
|
||||||
|
Kind string `json:"kind" gotsrpc:"type:'Trip'"`
|
||||||
|
Destination string `json:"destination"`
|
||||||
|
}
|
||||||
|
Car struct {
|
||||||
|
Kind string `json:"kind" gotsrpc:"type:'Car'"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
}
|
||||||
|
Pet struct {
|
||||||
|
Kind string `json:"kind" gotsrpc:"type:'Pet'"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
Price struct {
|
||||||
|
Trip *Trip `json:"trip,omitempty" gotsrpc:"union"`
|
||||||
|
Car *Car `json:"car,omitempty" gotsrpc:"union"`
|
||||||
|
Pet *Pet `json:"pet,omitempty" gotsrpc:"union"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript title="TypeScript"
|
||||||
|
export interface Trip {
|
||||||
|
kind:'Trip';
|
||||||
|
destination:string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Car {
|
||||||
|
kind:'Car';
|
||||||
|
model:string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Pet {
|
||||||
|
kind:'Pet';
|
||||||
|
name:string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Price = github_com_foomo_gotsrpc_playground_server_services_wof.Trip | github_com_foomo_gotsrpc_playground_server_services_wof.Car | github_com_foomo_gotsrpc_playground_server_services_wof.Pet | undefined
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user