Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Every property marked as optional + 'any' types

オープン
#158 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
openapi, typescript
領域
api, tooling

調査の方向性

TypeScript interface generator から始め、Swagger/OpenAPI のプロパティの必須性とプリミティブ型がどのようにマッピングされるかを追跡します。ContactPerson の例とそのスキーマを比較し、必須プロパティが非オプショナルであり、ドキュメント化された string または date のプロパティが any にならないことを確認します。

索引モデルが issue の本文から書いたものです。

説明

API Platform version(s) affected: 3.0

Description
I generated typescript interfaces from a API Platform with this package. This worked really well, but there are two issues that make the result pretty much unusable for me:

  • Every property is marked as optional, even '@id'. Having to manual check for every property kinda defeats the purpose of having the interfaces in the first place.
  • Some properties are marked as any, even though there is a proper type in the API docs. E.g. ContactPerson.image is listed as string in Swagger, but appears as any in TypeScript. I also noticed dates being any – but this was in a API Platform 2.6 project and might not be an issue in newer versions.

Here is an example taken out of my Swagger docs:

{
  "hydra:member": [
    {
      "@context": "string",
      "@id": "string",
      "@type": "string",
      "id": "string",
      "name": "string",
      "phoneNumber": "string",
      "email": "string",
      "jobAdvertisements": [
        "string"
      ],
      "image": "string"
    }
  ],
  "hydra:totalItems": 0,
  "hydra:view": {
    "@id": "string",
    "type": "string",
    "hydra:first": "string",
    "hydra:last": "string",
    "hydra:previous": "string",
    "hydra:next": "string"
  },
  "hydra:search": {
    "@type": "string",
    "hydra:template": "string",
    "hydra:variableRepresentation": "string",
    "hydra:mapping": [
      {
        "@type": "string",
        "variable": "string",
        "property": "string",
        "required": true
      }
    ]
  }
}

And this is the generated interface:

export interface ContactPerson {
  "@id"?: string;
  name?: string;
  phoneNumber?: string;
  email?: string;
  jobAdvertisements?: string[];
  image?: any;
}
主要言語
TypeScript
スター
113
フォーク
80
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

api-platform/api-doc-parser のほかの issue

api-platform/api-doc-parser の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

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

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