Front-End/TypeScript

[TypeScript] 3. 타입 지정 애매할 때(union, any, unknown)

발전하는 개발자 2022. 6. 9. 14:14
728x90
반응형

1. Union Type

타입을 2개 이상 합친 새로운 타입 만들기

 

1) 변수

let 회원 :(number | string) = 123;
// 문자나 숫자 데이터가 올 수 있다.

이미 데이터가 들어 갔으면 타입이 확정됨.

예시에서 숫자 데이터가 들어갔으므로 number타입이 됨.

 

2) array

var 어레이: (number | string)[] = [1, '2', 3]

3) object

let 오브젝트 :{ a : string | number } = { a : 123 }

 

2. any

모든 자료형 허용. 타입 실드 해제, typescript 사용 의미가 없음

let 이름 :any;
이름 = 123;
이름 = [];

 

3. unknown

모든 자료형 허용,

어떤 자료가 들어가도 타입은 unknown,

any보다 안전(잘못된 타입이 있을시 오류 발생)

let 이름 :unknown;
이름 = {};

let 변수1 :string = 이름;
// 오류남, 상단의 이름은 object자료형인데 stirng 자료형으로 저장해서
// 상단에 unknown 대신 any였다면 오류 안남.

 

4. 사칙연산이 안되는 것

union type, unknown type -> 타입스크립트는 정확한 타입을 좋아하므로 이것도 되고 저것도 된다거나 정해지지 않은 타입은 사칙연산을 하지 않음.

any, number, bigint만 연산 가능.

 

5. 타입 지정 연습

let user = 'kim'; 

-> let user :string = 'kim';

 

let age = undefined;

-> let age :undefined | number = undefined;

 

let married = false; 

-> let married :boolean = false;

 

let 철수 = [user, age, married];

-> let 철수 :(string | number | undefined | boolean)[] = [user, age, married];

 

let  학교 : {
    score : (number|boolean)[],
    teacher : string,
    friend : string | string[]
|
={
    score : [100, 97, 84],
    teacher : 'phil',
    friend : 'John'
}
학교.score[4] = false;
학교.friend = ['Lee', 학교.teacher]

 

 

728x90
반응형

'Front-End > TypeScript' 카테고리의 다른 글

[TypeScript] 4. function의 type 지정  (0) 2022.06.09
[TypeScript] 2. 기본 타입(Primitive types)  (0) 2022.06.06
[TypeScript] 1. 환경 설정  (0) 2022.06.03