오늘은 타입스크립트의 기본을 공부했다. 갑작스런 일때문에 3일동안 거의 공부하지 못했지만 남은 기간 열심히 공부하고 기업과제도 최대한 마무리해야겠다. 잠을 줄여보자..흑흑
타입 안정성 때문에 코드에 버그를 줄일 수 있고 런타임 에러 또한 줄일 수 있기 때문에 타입스크립트를 지향한다고 한다.
자바스크립트가 타입 안정성이 없는 이유?
배열 + bool 값을 했을때
배열과 boolean값이 없어지고 string이 된다.
허용하면 안될 코드를 허용해준다 (자바스크립트의 단점)
타입스크립트 사용시 number와 boolean 값을 더할 수 없다는 에러를 뱉어준다!
코드를 실행 시키면 안될 상황에 코드실행을 막아주지 않는다.
입력값이 2개로 보내야하는데 1개밖에 보내지않았음에도
코드를 실행시키고 NaN을 리턴해준다.(error가 나오는게 맞음)
타입스크립트 사용 시 2개의 입력값이 필요한데 1개 밖에 보내지지 않았다는 에러를 뱉어줌
joo라는 변수 안에 hello()라는 함수가 없음을 코드실행 전에 알려주는 것이 가장 좋지만
자바스크립트는 코드를 실행해야만 에러로 나타내준다.
타입스크립트는 코드를 실행하기 전 에러를 발생시키고 joo안에 hello()함수가 없음을
인지시켜준다.
Alias타입 방식을 사용하여 타입을 재사용할 수 있다.
any는 타입스크립트로 부터 빠져나오고 싶을때 사용
어떤 타입인지 모르는 변수를 타입스크립트에게 알려줘야할때
unknown타입 사용(사용할때 타입지정해서 사용해야함 tyepeof)
void? 따로 지정해주지는 않는다. void는 '비어있는것'을 말함(아무것도 return하지 않음)
never? return하지않고 오류를 발생시킬 수 있는 함수
Function Overloads ?
동일한 이름에 매개 변수와 매개 변수 타입 또는
리턴 타입이 다른 여러 버전의 함수를 만드는 것을 말함.
TypeScript에서는 오버로드 signatures을 작성하여
"다양한 방식으로 호출할 수 있는 함수"를 지정할 수 있다.)
다형성이란, 여러 타입을 받아들임으로써 여러 형태를 가지는 것을 의미한다.
signatures
ex) type Add = (a : number, b: number) => number;
Generics
제네릭은 C#이나 Java와 같은 언어에서 재사용 가능한 컴포넌트를 만들기 위해 사용하는 기법이다. 단일 타입이 아닌 다양한 타입에서 작동할 수 있는 컴포넌트를 생성할 수 있다.
(구체적인 타입을 지정하지 않고 다양한 인수와 리턴 값에 대한 타입을 처리할 수 있다.)
타입스크립트에서 제네릭을 통해 인터페이스, 함수 등의 재사용성을 높일 수 있다.
function A <T>(age: T): T {
return age
}
let resultA = A(14);
const B = <T extends {}>(age:T):T =>{
return age;
}
let resultB = B(15);
resultA 타입과 resultB타입을 number로 인식!