acacode / acacode/swagger-typescript-api
Nullable components with required values in complex schema types
- Langage dominant
- TypeScript
- Étoiles
- 4.1k
- Forks
- 436
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Release 10.0.2 (https://github.com/acacode/swagger-typescript-api/pull/419) added the `UtilRequiredKeys` type that produces invalid generated code when you have a schema with complex schema types (anyOf/allOf/oneOf) that reference required fields of nullable components.
How to trigger in a schema:
* Have a nullable component (`myObject` is the schema below)
* Reference component with complex schema type (`TestObject` in the schema below)
* Mark a nested field as required (`"required": ["name"],` as marked in `TestObject`)
Example schema:
```json
{
"openapi": "3.0.2",
"info": {
"title": "Nullable Refs Example",
"version": "1.0.0"
},
"components": {
"schemas": {
"myObject": {
"type": "object",
"nullable": true,
"properties": {
"name": {
"type": "string"
}
},
"required": ["name"]
},
"TestObject": {
"required": ["name"],
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/myObject"
}
]
}
}
}
}
```
Generated code from schema (utilising the nullable-3.0 test setup)
```ts
type UtilRequiredKeys = Omit & Required>;
export type MyObject = {
name: string;
} | null;
export type TestObject = UtilRequiredKeys;
```
Which produces the following error
```bash
Type 'string' does not satisfy the constraint 'never'.ts(2344)
```
Potential workarounds:
* Adjust schema to avoid this scenario
* remove usage of `UtilRequiredKeys` via the `configuration.internalTemplateOptions.addUtilRequiredKeysType`
* override `UtilRequiredKeys` definition in template to handle null case via ts NonNullable
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.