acacode / acacode/swagger-typescript-api

Omit readonly properties from PATCH requestContent

未關閉
#468 4 則留言 2 個 reaction 已指派 0 人 在 GitHub 檢視
enhancement
主要語言
TypeScript
星號
4.1k
分支
436
PR 合併指標
30 天內沒有已合併 PR

描述

If a schema is referenced as the requestContent to an API, the generated RequestBody should omit readonly properties.

Given a user:

```ts
export interface User {
readonly id: number
name: string
readonly email: string
}
```

When this type is referenced to be the input to a PATCH request, the input argument should omit readonly properties.

It should be possible to do some Typescript magic to strip readonly properties, like mentioned in https://stackoverflow.com/a/49579497/2240706.

```ts
type IfEquals =
(() => T extends X ? 1 : 2) extends
(() => T extends Y ? 1 : 2) ? A : B;

type WritableKeys = {
[P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>
}[keyof T];

type ReadonlyKeys = {
[P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, never, P>
}[keyof T];

type OmitReadonly = Pick>;
```

It would then be a case of updating the generated code to declare the argument as `OmitReadonly`

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。