코딩애플 타입스크립트 강의를 보고 정리한 내용입니다. 더 자세하고 친절한 설명은 해당 강의를 참고하세요.
변수에 들어오는 값이 string 일지 number 일지 애매하다면 Union type 을 사용합니다.
let userName: string | number = 'kim';
let userAge: (string | number) = 100;
배열이나 객체라면 아래처럼 넣을 수 있습니다.
let Array: (number | string)[] = [1,'2',3]
let Object: {data : (number | string) } = { data : '123' }
변수에 정의된 Union 타입은 할당하면서 OR 역할이 사라지고, 배열과 객체에 정의된 Union 타입은 OR 연산자가 유지됩니다.
any 타입은 실드 자체를 해제해서 아무 자료나 넣을 수 있는 타입입니다. 때문에 타입관련 버그를 추적할 수 없으므로 비상시 변수 타입 해제 용도로 쓰입니다.
let user: any = 'kim';
user = 123;
user = undefined;
user = [];
any 와 비슷하지만 해당 변수를 다른 곳에 할당할 때 에러가 나는 점이 any 와 다릅니다.
let name: unknown;
let userName: string = name;
let isUser: boolean = name;
let userAge: number = name;
// 아래 경우도 에러 (any 는 다르고)
name[0];
name - 1;
name.data;
타입스크립트는 확실한 타입이 아니면 연산을 하거나 접근할 시 에러가 납니다. 아래처럼 union type 의 경우도 에러가 납니다. (값 할당은 가능하지만 사용할 경우에는 number 로 타입 지정된 상태가 아니기 때문에)
let Age: string|number;
Age + 1;
이렇게 타입스크립트는 타입을 확실하게 검사합니다.
// 아래 코드는 오류가 납니다.
let school = {
score : [100, 97, 84],
teacher : 'Phil',
friend : 'John'
}
school.score[4] = false;
school.friend = ['Lee' , school.teacher]
// 아래 처럼 타입을 지정해주어야 합니다.
// 선언 이후 할당할 때도 해당 타입에 맞게 넣어주지 않으면 에러 발생
let school : {
score : (number|boolean)[],
teacher : string,
friend : string | string[]
} = {
score : [100, 97, 84],
teacher : 'Phil',
friend : 'John'
}
school.score[4] = false;
school.friend = ['Lee', school.teacher]