잠온다

TS) 기본 타입 및 union, any, unknown type 본문

Typescript

TS) 기본 타입 및 union, any, unknown type

블블디 2022. 5. 28. 15:38

1. 기본 타입

let name: string = 'kim';
let age: number = 26;
let useAt: boolean = false;
// null, undefined도 가능

let favoriteMovie: string[] = ['이터널 션샤인', '죽은 시인의 사회'];
let info: { name: string, age: number } = { name: 'kim', age: 26 }

=============================================================================================

// 타입스크립트는 변수 생성 시 자동으로 타입을 부여해 주기에 일일이 모두 부여할 필요는 없다.
// 변수 선언만 하고 값을 나중에 할당하여도 자동으로 타입을 부여해 준다.
let name = 'kim';
let age = 26;
let favoriteMovie = ['라라랜드', '소울', '비긴어게인'];
let info = { name: 'kim', age: 26 }

2. union type

// Union type
let size: string | number;	// (string | number)와 같이 괄호 가능
size = 10;
size = '10';
// ★값이 할당되는 순간 타입이 해당 타입으로 변환된다.

let arr: (string | number)[] = [1, '2', 3];
let obj: { data: string | number } = { data: 10 }

3. any type

// Any type
let all: any;
all = 'kim';
all = 26;
all = [];
all = undefined;
// 사용 지양. 비상 시 사용

4. unknown type

// Unknown type
let all: unknown;
all = 'kim';
all = 26;
all = [];
all = undefined;
// any와 마찬가지로 모든 타입 할당 가능

// 하지만 값을 할당해도 여전히 타입은 unknown type
all = 'kim';
let poo: string = all // error

// 아래의 경우도 error
let poo: unknown
poo[0];
poo - 1;
poo.data;

5. error case

// case 1
let poo: string | number;
poo + 1; // error

// typescript는 변수의 타입이 확실해야 연산을 수행해준다.
// 특히 '-'의 경우는 number 타입일 때만 가능하다.
// 위 case에서 poo는 string도, number도 아닌 union type이다.
// union type에는 연산을 실행할 수 없다.

=============================================================================================

// case2
let poo: unknown = 1;
poo + 1;

// case2는 poo에 1이라는 number 값이 할당되었더라도 
// 타입은 여전히 unknown이기에 연산을 실행할 수 없다.

 

Comments