new wings

プログラミングを始めたので、感想を書いてくと思います

型遊び

型遊び

/********************************************/

// prettier-ignore
export const systemModifierList = [
  'STAB', 'Critical', 'MultiTarget', 'NotFullProtect',
  'Burn', 'ParentalBond',
] as const;
export type systemModifier = typeof systemModifierList[number];

// prettier-ignore
export const statStageModifierList = [
  'Plus_1', 'Plus_2', 'Plus_3', 'Plus_4', 'Plus_5', 'Plus_6',
  'Minus_1', 'Minus_2', 'Minus_3', 'Minus_4', 'Minus_5', 'Minus_6',
] as const;
export type statStageModifier = typeof statStageModifierList[number];

// prettier-ignore
type ModifierOfCategory<T extends modifierCategory> =
  T extends 'System' ? systemModifier :
  T extends 'StatStage' ? statStageModifier :
  never;

type ModifierOption = {
  [category in modifierCategory]?: ModifierOfCategory<category>[];
};

/********************************************/

const modifierOption: ModifierOption = {
  System: ['Burn'],
  StatStage: ['Plus_6'],
};