Skip to content

Instantly share code, notes, and snippets.

@tecsoc
Created October 6, 2023 14:06
Show Gist options
  • Save tecsoc/1bdde688ab8c3f296dcd91bc531da878 to your computer and use it in GitHub Desktop.
Save tecsoc/1bdde688ab8c3f296dcd91bc531da878 to your computer and use it in GitHub Desktop.
自己紹介.ts
// ----------------------------------------------------
// 基底となる型を定義
// ----------------------------------------------------
enum SkillLevel {
Junior = 1,
Middle,
Senior,
SemiExport,
Export,
}
type SkillsBaseType = {
[key: string]: {
skillRank: SkillLevel;
relatedSkills?: SkillsBaseType;
};
};
type SnsIdsBaseType = {
[key: string]: string;
};
type ProfileBaseType = {
name: string;
kanaName: string;
engineerExperienceYears: number;
workExperienceYears: number;
snsIds: {
[key: string]: string;
};
skills: SkillsBaseType;
hobby: Hobby;
};
// ----------------------------------------------------
// 本当は1~2のRangeにしたかったけどぱっと実装できなかったので妥協
type EngineerExperienceYears = 1 | 2;
interface Skills extends SkillsBaseType {
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;
};
};
};
}
enum Hobby {
Programming = "programming",
Soccer = "watching soccer",
Music = "listening music",
}
interface Profile extends ProfileBaseType {
name: "TecSoc";
kanaName: "テックソック";
engineerExperienceYears: EngineerExperienceYears;
workExperienceYears: EngineerExperienceYears;
snsIds: {
github: "tecsoc";
x: "tec2soc";
zenn: "tecsoc";
};
skills: Skills;
hobby: Hobby;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment