acacode / acacode/swagger-typescript-api
`not: {}` generates `any` instead of `never`
- 主要言語
- TypeScript
- スター
- 4.1k
- フォーク
- 436
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
## 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`.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。