타입스크립트의 타입 계층도에서 object 타입은 인터페이스와 클래스의 상위 타입입니다. object타입으로 선언된 변수는 number, boolean, string 타입의 값을 가질 수는 없지만, 속성이름이 다른 객체를 모두 자유롭게 담을 수 있습니다.
let o : object = {name:"jack", age="32"}
o = {first:1, second:2}
타입스크립트 객체의 타입을 정의할 수 있게 하는 interface라는 키워드를 제공합니다. 인터페이스는 객체의 타입을 정의하는 것이 목적이므로 다음처럼 객체를 의 미하는 중괄호 {}로 속성의 이름과 타입을 나열하는 형태로 사용합니다.
interface 인터페이스 이름 {
속성이름[?]:속성타입 //속성이름 뒤에 ?가 붙으면 필수 데이터는 아니라는 뜻 이다.
}
인터페이스 속성들을 여러줄로 구현할 때는 쉼표(,)나 세미콜론(;)을 구분자로 쓰거나 줄바꿈만 해도 된다.
interface IPerson{
name: string;
age: number;
bool? : boolean //없어도 상관없는 데이터[선택속성]
}
타입스크립트는 interface키워드를 사용하지 않고 이름없는 인터페이스를 만들 수 있다.
let ai:{
name:string
age:number
etc?:boolean
} = {name: "Jack", age:22}
익명 인터페이스는 함수를 다음처럼 구현할 때 사용된다.
function printMe(me: {name: string, age:number, etc?:boolean}){
console.log(
me.etc ?
`${me.name} ${me.age} ${me.etc}` :
`${me.name} ${me.age}`
)
}
printMe(ai) // Jack 22