🤣

TypeScriptの型で自己紹介してみた

2023/10/06に公開

はじめに

Zennの記事をちょっとずつ書いていこうと思っていて
それらを書いていく前に、自己紹介記事を書きたいと思っていました。
実は自己紹介記事書く前に1記事投稿しているのは秘密

そんな時に、「TypeScriptで自己紹介をする」というアイディアを思いつき
型で自己紹介できる気がしてきたので、チャレンジしてみました。

気が向いたら是非これに続いて
TypeScriptでも、それ以外でも良いので
チャレンジしてみてください!笑

実装

完成系の型

最終的なTypeScriptの型を出力する方法が分かんなかったので、コピぺしました。
色々なTypeScript Playgroundに入力して、できないか試してみたのですが
求めているものは見つけられなかったです。
有力な情報お待ちしております。

interface Profile extends ProfileBaseType {
  name: "TecSoc";
  kanaName: "テックソック";
  engineerExperienceYears: 1 | 2;
  workExperienceYears: 1 | 2;
  snsIds: {
      github: "tecsoc";
      x: "tec2soc";
      zenn: "tecsoc";
  };
  skills: {
    javascript: {
      skillRank: SkillLevel.Export;
      relatedSkills: {
        react: {
          skillRank: SkillLevel.Senior;
          relatedSkills: {
            next: {
              skillRank: SkillLevel.Senior;
            };
          };
        };
        vue: {
          skillRank: SkillLevel.Junior;
          relatedSkills: {
            nuxt: {
              skillRank: SkillLevel.Junior;
            };
          };
        };
        googleAppsScript: {
          skillRank: SkillLevel.Export;
        };
      };
    };
    typescript: {
      skillRank: SkillLevel.SemiExport;
    };
    ruby: {
      skillRank: SkillLevel.Junior;
      relatedSkills: {
        rails: {
          skillRank: SkillLevel.Junior;
        };
      };
    };
    go: {
      skillRank: SkillLevel.Junior;
      relatedSkills: {
        gin: {
          skillRank: SkillLevel.Junior;
        };
      };
    };
    dart: {
      skillRank: SkillLevel.Junior;
    };
    python: {
      skillRank: SkillLevel.Junior;
      relatedSkills: {
        tensorflow: {
          skillRank: SkillLevel.Junior;
        };
        pytourch: {
          skillRank: SkillLevel.Middle;
        };
        flask: {
          skillRank: SkillLevel.Junior;
        };
        djanogo: {
          skillRank: SkillLevel.Junior;
        };
        fastapi: {
          skillRank: SkillLevel.Junior;
        };
        selenium: {
          skillRank: SkillLevel.SemiExport;
        };
        numpy: {
          skillRank: SkillLevel.Middle;
        };
        pandas: {
          skillRank: SkillLevel.Middle;
        };
      };
    };
    "c++": {
      skillRank: SkillLevel.Middle;
      relatedSkills: {
        dxlib: {
          skillRank: SkillLevel.Middle;
        };
      };
    };
  };
  hobby: "programming" | "watching soccer" | "listening music";
}

PS.全然関係ないけどZennでTypeScript書くとシンタックスハイライトが全然効かないけどこういうもんなんだろうか

Discussion