interface Name {
	name: type
	.
	.
	.
}
interface Animal {
	name: string
	age: number
	isValid: boolean
}

const lion: Animal = {
	name: '사자',
	age: 500,
	isValid: true
}

const tiger: Animal = {
	name: '호랑이',
	age: '600',     // error
	isValid: 123    // error
}

선택적 속성 ( ? )

interface Animal {
	name: string
	age: number
	isValid?: boolean
}

const lion: Animal = {
	name: '사자',
	age: 500
}

Animal 인터페이스의 isValid 속성은 선택적 속성(?)이기 때문에 사용을 해도 되고 하지 않아도 됩니다.

읽기전용 속성 (readonly)

interface Animal {
	name: string
	readonly age: number
	isValid?: boolean
}

const lion: Animal = {
	name: '사자',
	age: 500,
	isValid: true
}

lion.isValid = false;
lion.age = 10;             // error

Animal 인터페이스의 age 속성은 읽기전용 속성(readonly)으로 값의 재할당이 불가능합니다.