Typescript/オブジェクト

src/object/object.ts
export default function objectSample(){
    const taro: {
        age: number
        lastName: string
        readonly firstName: string
        gender?: string
    } = {
        age: 38,
        lastName: "Yamada",
        firstName: "Taro"
    }
    taro.gender = "male";
    taro.lastName = "Suzuki";
    //taro.firstName = "Jiro";
    

    const capitals: {
        [counrtyName: string]: string
    } = {
        Japan: "TOkyo",
        Korea: "Seoul"
    }
    capitals.China = "Beijing";
    capitals.Canada = "Ottawa";
    //console.log(capitals);

    
    type Country = {
        capital: string
        language: string
        name: string
    }
    const japan: Country = {
        capital: "Tokyo",
        language: "Japanese",
        name: "Japan"
    }
    const america: Country = {
        capital: "W.D.C",
        language: "English",
        name: "U.S.A"
    }
    // console.log(japan);
    // console.log(america);


    type Knight = {
        hp: number
        sp: number
        weapon: string
        swordSkill: string
      }
    
      type Wizard = {
        hp: number
        mp: number
        weapon: string
        magicSkill: string
      }
    
      type Adventurer = Knight | Wizard // 合併型: KnightとWizardどちらかの型を持つ
      type Paladin = Knight & Wizard // 交差型: KnightとWizardが持つ型を全て持っている
    
      // Knightの型を持つadventurer2
      const adventurer1: Adventurer = {
        hp: 100,
        sp: 30,
        weapon: '木の剣',
        swordSkill: '三連斬り',
      }
    
      console.log('Object alias sample 3:', adventurer1)
    
      // Wizardの型を持つadventurer2
      const adventurer2: Adventurer = {
        hp: 100,
        mp: 30,
        weapon: '木の杖',
        magicSkill: 'ファイヤボール',
      }
    
      console.log('Object alias sample 4:', adventurer2)
    
      // KnightとWizard両方の型を持つpaladin
      const paladin: Paladin = {
        hp: 300,
        sp: 100,
        mp: 100,
        weapon: '銀の剣',
        swordSkill: '三連斬り',
        magicSkill: 'ファイヤボール',
      }
    
      console.log('Object alias sample 5:', paladin)
}
src/index.ts
import objectSample from "./object/object"

objectSample();