type alias를 작성하다 보면 많은 타입을 작성해야 하는 경우가 있다.
배열의 경우 T[] 처럼 generic을 사용하거나 number[]처럼 동종의 타입을
배열로 선언해 모아두는 것이 일반적이므로 타입 설정하는게 그리 까다롭지는 않다.
무언가 잡다한게 많이 섞이는 경우 보통 object 타입을 선택하게 된다.
object type alias를 interface를 통해 구성해보자.
interface Types{
name:string;
age:number;
address?:string;
}
보기 좋게 구성을 하였고 옵션으로 address는 선택형이 되었다.
그렇다면 이제 함수에 사용을 해보도록 하자.
function callTypes(input:Types){
console.log(input)
}
이렇게 함수에 넣는것까지는 좋다.
그런데 함수를 사용하는 것은 어떻게 해야 할까?
callTypes({name:'name',age:1,address:'choice'});
이런식으로 만들어주면 된다.
즉
function callTypes(input:Types)
의 뜻은 input을 넣는데 이는 interface에서 지정한 객체 타입이고
이 객체 타입중 ? 옵션이 붙은 애는 선택적으로 넣을지 말지를 결정하겠다는 것이다.