acacode / acacode/swagger-typescript-api

`not: {}` generates `any` instead of `never`

Ouverte
#1,821 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
4.1k
Forks
436
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Description

An empty JSON Schema accepts every possible value, so negating it with `not: {}` produces an impossible schema. The corresponding TypeScript type is `never`.

`swagger-typescript-api` currently generates `any` for this schema.

Version: 13.12.6.

## Example
```yaml
openapi: 3.0.3
info:
title: not schema reproduction
version: 1.0.0

paths: {}

components:
schemas:
Identifier:
oneOf:
- type: object
additionalProperties: false
required:
- internalId
properties:
internalId:
type: string
externalId:
not: {}

- type: object
additionalProperties: false
required:
- externalId
properties:
internalId:
not: {}
externalId:
type: string
```

### Actual Output

```ts
type Identifier =
| {
internalId: string
externalId?: any
}
| {
internalId?: any
externalId: string
}
```

### Expected Output

```ts
type Identifier =
| {
internalId: string
externalId?: never
}
| {
internalId?: never
externalId: string
}
```

### Source Problem

https://github.com/acacode/swagger-typescript-api/blob/v13.12.6/src/schema-parser/complex-schema-parsers/not.ts
The relevant parser currently returns `any` for every `not` schema:

```ts
export class NotSchemaParser extends MonoSchemaParser {
override parse() {
return this.config.Ts.Keyword.Any
}
}
```

#1798 addressed the generation crash for object-valued `not` schemas. The crash is fixed, but the generated type for `not: {}` remains `any`.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.