acacode / acacode/swagger-typescript-api
`nullable: true` ignored if `type: object` and a property has `nullable: true`
- 主要语言
- TypeScript
- 星标
- 4.1k
- 派生
- 436
- PR 合并指标
- 30 天内没有已合并 PR
描述
# 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 :)
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。