<aside> ❗ 내가 직접 만드는 ‘데이터 타입’

</aside>

interface Person {
	name: string
	age<u>**?**</u>: number
}

const p1: <u>**Person**</u> = { name: 'Lee', age: 30 }

indexable 속성

interface Person {
	name: string
	age?: number
	[index: string]: any
}

const person: Person = {
	name: 'Lee',
	<u>**systers**</u>: ["sung", "chan"]
}

interface 내부 함수

interface Person {
	name: string
	age: number
	<u>**hello(): void**</u>
}

const person: Person = {
	name: 'Lee',
	age: 30,
	<u>**hello</u>: function(): void {
		console.log('안녕하세요! ~~~)	
	}**
}

interface 구현

interface IPerson {
	name: string
	age?: number
	hello(): void
}

<u>**class**</u> Person <u>**implements**</u> IPerson {
	name: string
	age?: number | undefined

	<u>**constructor**</u>(name:string) {
		this.name = name
	}
	hello(): void {
		console.log('~~')
	}
}

const person = new Person('Lee')

interface 상속

interface IPerson {
	name: string
	age?: number
}

interface IKorean <u>**extends**</u> IPerson {
	city: string
}

const k: IKorean = {
	name: 'Lee'
	city: '서울'
}