타입스크립트 대원칙
1) 타입은 변수, 매개변수, 리턴값에만 표기 한다.
2) 최대한 명확하고 정확하게 작성 한다.
3) 타입이 추론가능할땐 타입 추론을 적극 활용해라. 다만 타입 추론이 내가 생각한 타입이 아니거나 any 타입인 경우 직접 타입을 표기해야한다.
const a= 5;
const b= "아";
위의 코드들은 상수(변하지 않고 고정된)값이니까 굳이 number나 string으로 표기하여 범위를 넓히는것보단 타입 추론을 하게 두는게 낫다.
타입스크립트 문법
1) 타입은 고정된 원시값(string,number,null,undifined,boolean...등)으로도 표기가 가능하다.
const a:5 = 5;
const b:false = false;
const c:"문자열" = "문자열";
2) 배열 타입 유니온 사용할때는 소괄호가 있어야함.
const arr:(string | number) = [] 이런식으루
3) 매개변수에 타입표기만 해줘도 타입스크립트에서 리턴값을 알아서 추론해줄수도 있다.
function foo(x:number, y:number) {return x x y}
위의 경우 타입스크립트는 매개변수 x와 y의 타입을 보고 리턴값을 추론한다.
하지만 항상 명심하자. 내가 예측하지 못한 타입일 경우에는 명확하게 타입을 표기해야하는걸로.
4) 함수의 오버로딩
1) 동일한 이름에 매개 변수만 다른 여러 버전의 함수를 만드는 것을 함수의 오버로딩이라고 한다.
2) 파라미터의 형태가 다양한 여러 케이스에 대응하는 같은 이름을 가진 함수를 만드는 것.
3) function 키워드로만 함수 오버로딩을 할 수 있으며 arrow function으로는 오버로딩을 할 수 없다.
4) 유니온을 쓰는걸 권장하는듯.
5) as문법
1) 타입스크립트가 추론하지 못하는 타입을 as키워드를 통해 명시해주는 것
사용법 : 변수 as 타입
2) chaining 하는 경우 변수를 괄호로 감싼 뒤 그 안에서 as 키워드를 사용
3) as뒤에 명시하고자 하는 데이터 타입을 작성해주면 된다.
4) 실제 데이터 타입을 변경하지 않고 타입 에러가 나지 않게끔만 해준다. 즉 컴파일 과정에서 사라짐.
6) never타입
타입 스크립트에서 빈 배열을 선언할경우 never타입으로 지정이 되고 해당 배열에
어떤 값도 들어올수 없게 된다.