Typescript

[타입스크립트] Unknown, Object , Null, Undefined

*히아* 2022. 4. 6. 16:16

Unknown

Unknown은 Any와 같이 최상위 타입이다. 하지만 Unknown에 다른 타입의 값 할당은 가능하지만 Unknown을 다른 타입에는 불가!

=> Unknown이라는 그릇에는 다양한 타입을 담을 수 있지만! 다른 특정 타입 그릇에(any 빼고) Unknown 타입을 담을 수 없다!!

 

*** 최상위 타입이란?

어떤 타입의 값도 할당할 수 있는 타입!

 

*** Unknown은 타입 단언(Assertions)이나 타입 가드(Guards)가 필요로 하다.

 

let a: any = 123;
let u: unknown = 123;

let v1: boolean = a; // 모든 타입(any)은 어디든 할당할 수 있습니다.
let v2: number = u; // 알 수 없는 타입(unknown)은 모든 타입(any)을 제외한 다른 타입에 할당할 수 없습니다.
let v3: any = u; // OK!
let v4: number = u as number; // 타입을 단언하면 할당할 수 있습니다.

 

언제 사용할까?

=> 다양한 타입을 반환할 수 있는 API에서 사용된다! 

 

 

 


Object

*** 컴파일러 옵션에서 엄격한 타입 검사(strict)를 true로 설정하면 null은 포함되지 않는다.

    => 객체에는 null값을 넣을 수 있지만 엄격한 타입 검사를 하면 null을 미포함 시킬 수 있다.

let obj: object = {};
let arr: object = [];
let func: object = function () {};
let nullValue: object = null;
let date: object = new Date();
// ...

 

객체는 여러 타입의 상위 타입이다. 따라서 하위 타입들이 어떠한 타입인지 불명확할 수 있다

 => 보다 저확하게 타입 지정을 위해서는 객체 속성들에 대해 미리 지정해줄 수 있따!!

 

let userA: { name: string, age: number } = {
  name: 'HEROPY',
  age: 123
};

let userB: { name: string, age: number } = {
  name: 'HEROPY',
  age: false, // Error
  email: 'thesecon@gmail.com' // Error
};

 

객체를 반복적으로 사용하기 위해서는 interface나 type사용을 추천!

interface IUser {
  name: string,
  age: number
}

let userA: IUser = {
  name: 'HEROPY',
  age: 123
};

let userB: IUser = {
  name: 'HEROPY',
  age: false, // Error
  email: 'thesecon@gmail.com' // Error
};

 

 

 


Null과 Undefined

unKnown과 달리 null과 undefined는 모든 타입의 하위 타입이다

let num: number = undefined;
let str: string = null;
let obj: { a: 1, b: false } = undefined;
let arr: any[] = null;
let und: undefined = null;
let nul: null = undefined;
let voi: void = null;
// ...

 

*** 컴파일 옵션  "strictNullChecks" : true  를 통해 엄격하게 Null과 Undefined 서로의 타입까지 더 이상 할당할 수 없게 만들 수 있다. 

 

*** void에는 undefined 할당 가능

let voi: void = undefined; // ok

 

 

 


 

출처

https://edu.goorm.io/learn/lecture/22106/%ED%95%9C-%EB%88%88%EC%97%90-%EB%B3%B4%EB%8A%94-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8/lesson/1042560/%ED%83%80%EC%9E%85-%EC%84%A0%EC%96%B83

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io