acacode / acacode/swagger-typescript-api

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

オープン
#1,821 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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 はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。