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:
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:
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:
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:
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:
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 :)
What's wrong?
Hello again. I have a situation where I had an object with
nullable: trueand all was working well, then I needed to add some properties that hadnullable: trueand for some reason the| nullon the main object was removed from the types.This Schema:
Produces the following incorrect type:
What works
If there are no properties that are nullable then the parent object is correctly typed as shown below:
This Schema:
Produces the following correct result:
What is expected
I expect that
nullable: truewill 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:Thanks for the hard work on this. We're still happy to have it to work with :)