Javascript 기반으로 만들어진 언어
자바스크립트를 보완하기 위한 언어
Type 안정성으로 실수를 피할 수 있어 생산성이 높아진다.
C#, Java, Kotlin 처럼 사용한다.
[TypeScript 사용 예]
const st : string = "스트링";
const player : {
name : string,
age? : number // nullSafety 도 사용 가능하다.
readonly sex : string // 읽기 전용
} = {
name: "이름"
}
이는 아래처럼 구조화할 수 있다.
type Player = { // class 대신에 type이라고 쓴다.
name: string,
age? : number
}
const player : Player
player.name = "이름"
unknown, void, never
call signature
type Add = (a: number, b: number) => number;
const add: Add = (a, b) => a+b; // Add 에서 정해놨기 때문에 인자에서 지정하지 않아도 된다.
*kotlin의 constructor 처럼 생성자와 같은 기능을 한다.
constructor 처럼 여러개의 call signature를 정할 수도 있다.
overloading 이다.
type Add = {
(a: number, b: number) : number
(a: number, b: string) : number
}
*NextJs : ReactJs 프레임워크 (하아.. 공부할거 많다....ㅡㅡ;;;)
다형성
generic
call signature 를 작성할때 들어올 확실한 타입을 모를때 사용(placeholder 느낌)
type List = {
<T>(arr: T[]): T // T라고 안 써줘도 됨,
}
const list: List = (arr) = arr
const a = list([1,2,3,4]);
const b = list(["문자", true, 3, 4, "문자");
이렇게 어떤 타입이든 추론해준다.
function list<T>(a: T[]) {
return arr
} // 이렇게 함수형으로도 할 수 있다.
const a = list<string>([1,2,3,4]; // 이렇게 직접 제너릭을 명시하면 당연히 에러 - string 인데 int를 가지고 있으니