acacode / acacode/swagger-typescript-api

`nullable: true` ignored if `type: object` and a property has `nullable: true`

Offen
#533 5 Kommentare 9 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
TypeScript
Sterne
4.1k
Forks
436
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

# What's wrong?
Hello again. I have a situation where I had an object with `nullable: true` and all was working well, then I needed to add some properties that had `nullable: true` and for some reason the ` | null` on the main object was removed from the types.

__This Schema:__
```yaml
MyDomainObjectSchema:
required:
- user
properties:
user:
type: object
nullable: true
required:
- id
- displayName
- email
properties:
id:
type: string
displayName:
type: string
email:
type: string
nullable: true
```

__Produces the following incorrect type:__
```typescript
export interface MyDomainObjectSchema {
user: {
id: string;
displayName: string;
email: string | null;
}; // where is the union with `null`?
}
```

## What works

If there are no properties that are nullable then the parent object is correctly typed as shown below:
__This Schema:__
```yaml
MyDomainObjectSchema:
required:
- user
properties:
user:
type: object
nullable: true
required:
- id
- displayName
- email
properties:
id:
type: string
displayName:
type: string
email:
type: string
# removing `nullable: true` here fixes the incorrect behavior
# nullable: true
```
__Produces the following correct result:__

```typescript
export interface MyDomainObjectSchema {
user: {
id: string;
displayName: string;
email: string;
} | null;
}
```

# What is expected

I expect that `nullable: true` will always apply to an object schema regardless of the properties and their conditions. I expect the original YAML schema provided would produce the following type:

```typescript
export interface MyDomainObjectSchema {
user: {
id: string;
displayName: string;
email: string | null;
} | null;
}
```

Thanks for the hard work on this. We're still happy to have it to work with :)

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.