자바스크립트의 확장 버전 같은 느낌으로, 자바스크립트 문법에 데이터 타입 기능을 강화해서 사용하기 위한 언어입니다.
자바스크립트는 동적 타입의 인터프리터 언어로 런타임 시 오류를 발견할 수 있는 반면, 타입스크립트는 정적 타입의 컴파일 언어이며 타입스크립트 컴파일러 또는 바벨을 통해서 자바스크립트 코드로 변환됩니다. 웹 브라우저는 자바스크립트 파일만 해석할 수 있기 때문에, 타입스크립트 언어로 코딩을 하고 이를 자바스크립트로 변환해주는 이와 같은 과정의 도움을 받아야 합니다.
JS의 느슨한 결합이라는 특징 때문에, 데이터 타입을 사용자가 엄밀하게 정해주지 않아도 되었습니다. 그러나 프로젝트 규모가 크고 복잡해지고 유지보수와 협업이라는 기준에서 데이터 타입이 중요해졌고, 그러한 수요에 맞춰 타입스크립트가 등장하게 되었습니다.
const myName: string = "choi";
const myNameArr: string[] = ["choi", "park"];
const myNameObj: { name?: string } = {};
const myNameObjArr: { id: string | number }[] = [{ id: "hoho" }, { id: 123 }];
type MyType = [{ name: string }?, { age: number }?];
const useMyType: MyType = [];
const multiply2 = (x: number): number => {
return x * 2;
};
const answer = multiply2(3);
type ApplyEvery = {
[key: string]: string;
};
const MemberInfo: ApplyEvery = {
name: "justin",
addr: "gangnam",
};
interface MyArr {
[index: number]: string;
}
const snackArr:MyArr = ['ace', 'mongshell']
일반적인 코딩에서의 상속 개념 처럼 extends를 써서 다른 interface를 상속받아서 쓸 수 있습니다.
| 또는 & 를 써서 데이터 타입을 조건적으로 지정해줄 수 있습니다.
데이터 타입을 미리 받지 않고, 함수를 호출할 때 받은 데이터 타입으로 사용하기 위해서 도입된 개념입니다. 따라서 함수를 호출하기 전까지는 파라미터와 리턴값의 데이터 타입이 정해져 있지 않다가, 실제 함수를 사용하기 위해서 호출할 때 <> 안에 전달한 타입으로 파라미터와 리턴값의 데이터 타입이 정해집니다.
정의할 때 제네릭 형식을 썼지만, 호출 시 <>를 주지 않았다면 전달된 파라미터를 보고 타입스크립트가 데이터 타입을 추정하여 적용됩니다.
const GenericFunc = <T>(params: T): T => {
return params;
};
GenericFunc<string>("hi");
GenericFunc("hi");
새로운 것을 습득하고 배우는 데 드는 시간과 비용을 의미합니다. 처음 배울 때는 더디지만, 시간이 지날수록 가속도와 효율이 높아지는 것을 그래프로 나타내어 주로 설명하기 때문에 러닝 커브라는 이름이 붙었습니다.