옵셔널
tmp 라는 함수의 파라미터앞에 ? 가 있는데 이것이 옵셔널이다 이것은 파라미터가 있어도 되고 없어도 된다는뜻
tmp(1,2,3,4) 를 하면 오류가나는데 만약 파라미터로 몇개를 전달할지 모른다는 상황이라면 어떻게 해야될까?
rest 문법을 사용하여 파라미터들을 받아주면 된다. 오류가 깔끔히 사라졌다
제네릭
제네릭(generic)이란 타입을 명시하여 하나의 타입만을 사용하는것이 아닌 다양한 타입을 사용할수있도록 하여 재사용성을 높여주는 기법이다.
설명만 보면 any와 다를거 없어보이지만 아주 확실한차이가 있다.
모든타입을 허용하는 any로 타입을 명시해주고 함수를 만들어보았다.
anyFunction 으로부터 반환되어지는 anyNumber,anyString 두개의 변수에 각각 할당해주었다 이 두개의 타입은 무엇이 될까?
any 타입으로 명시 되어있다.
any 타입이기때문에 number나string 메서드들이 자동완성되지않아서 전부 다 알고있다면 문제없지만 약간 못마땅하다.
any 와 비슷한거같지만 완전히 다른 generic을 사용해보겠다.
generic 으로 함수를 만들었고 함수에서 반한되어지는 값들을 각각 담았는데 어떤 타입으로 변수들은 타입이 명시되어있을까?
각각 전달한 타입에 맞게 타입스크립트가 추론하여 number는 number 로 string 은 string 으로 명시되었다.
또한 any와는 달리 number메서드들을 .을 찍으면 자동완성목록까지 보여준다.
즉 generic 은 any 와 달리 타입을 한가지로 명시하는게 아닌 유연하게 타입을 받아들여 함수의 재사용성을 높이는 도구라고 할수있는것이다