오늘부터 미루고 미루던 typescript 공부를 시작했다. 마음 먹은지는 한참 됐지만 미루고 미루다 이제는 typescript가 필수가 되어버려서 더 이상 미뤘다가는 큰일날 거 같아 시작한다.
코딩애플님의 typescript강의를 참고하였다.
많은 강의를 봤지만 개발을 쉽고 재밌게 알려주는 건 코딩애플님이 짱인거같다.
타입스크립트에서는 변수들의 자료형을 미리 지정해 오류를 줄일 수 있다.
1. String
2. Number
3. Boolean
4. Array
5. Tuple
... 많은 타입들을 지원한다.
let 숫자: number = 1;
let 숫자에문자할당: number = "123"; // ❌ 에러가 발생한다.
let 문자: string = "string";
let 참불: boolean = true;
let arr: string[] = ["bang", "kim"];
let obj: { name?: string } = { name: "bang" };
let 이름: string | number = 123; // 이름은 string이 올수도 있고 number가 올 수도 있다.
function temp(x: number): number {
return x * 2;
}
temp(123);
temp("123");// ❌ 매개변수를 string으로 지정했기 때문에 에러가 발생한다.
주의할 점이 타입스크립트는 매우 엄격하기 때문에 배열의 원소들의 타입들의 순서까지 잘 지켜야한다.
type Member = [number, boolean];
let john: Member = [123, true];//순서와 type을 지키지 않으면 에러가 발생한다.
let 어레이: (number | string)[] = [1, "2", 3];
배열을 union type으로 지정할 때 꼭 ()으로 감싸줘야한다.
number | string[] <- number 또는 string으로 된 배열을 의미하게 된다.
type temp = {
name: string,
age: string
};
let kim: temp = { name: "kim", age: "2" };
type temp = {
[key: string]: string // key와 value가 모두 string 타입이여야한다.
};
type 관련 에러가 발생해도 추적할 수가 없다.
let 아무거나: any = 1; //number형으로 아무거나를 할당했지만
아무거나 = "문자형" // string형을 할당해도 에러가 발생하지 않는다.
아무거나 = 123;
let temp: string = 아무거나 // string으로 선언된 변수에 number형 변수를 넣어도 에러가 발생하지 않는다.
let 언노운: unknown;
언노운 = 123;
let temp2: string = 언노운; //위에서 이미 언노운에 number형으로 할당했기 때문에 string형인 temp2에 대입하면 에러가 발생한다.
let 언노운: unknown;
언노운 = 123;
언노운 - 1; // ❌ number형으로 할당했더라도 언노운으로 타입 지정 된 변수는 수학연산이 불가능하다.
let unionType: string | number;
uniontype + 1; // ❌ number형이 될 수 있더라도 수학연산이 불가능하다.