undefined & null
In TS, both undefined and null은 실제로 각각 undefined와 null이란 타입을 가짐
Much like void, they're not extremely useful on their own
둘 다 소문자만 씀 (타입도 소문자, 값도 소문자)
이 변수들에 할당할 수 있는 것들은 거의 없음
let u: undefined = undefined;
let n: null = null;
undefined&null are subtypes of all other types
→설정을 하지 않았을 때 얘기임 (설정 : tsconfig설정)
예) number에 null 또는 undefined를 할당할 수 있다는 의미
→근데 이렇게 사용하면 문제가 됨
그래서 컴파일 옵션의 --strictNullChecks
를 사용하면서 컴파일을 하면,
그때는 null과 undefined는 void나 자기 자신에게만 할당할 수 있음
(다른 타입들의 하위타입으로 존재 X)
/*
void는 예외적인 아이. void는 undefined랑 비슷한 의미를 가짐
그래서 void에 undefined를 할당할 수 있음. null은 X
*/
→타입적으로 안전하고 정확하기 때문에 보통 위의 옵션을 키고 사용하기
예) number에 null을 입력하면 에러
만약에 number에 null과 undefined를 할당할 수 없다면 코딩하면서 힘들 거임. 왜냐하면 null과 undefined를 굉장히 많이 사용하니까.
그럴 때는 number에 null과 undefined가 함께 있는 표현을 해주기 위해서 union 타입을 활용
→ null과 undefined를 할당할 수 있게 하려면 union type을 이용해야 함
let union: string = null; //(X)
let union: string | null = null; //(O)
//union은 합집합 같은 녀석
union = "Mark";
union: string | null
이런 식으로 입력하면 문자열도 null도 값으로 쓸 수 있음
나중에 'union의 상태가 null이 아닐 때만 ~~ 하겠다'는 식으로 type으로 null 부분을 제외시킬 수 있는데, 이걸 타입 가드라고 부름
null in JS
null이라는 값으로 할당된 것을 null타입이라고 함
무언가 있는데 사용할 준비가 덜 된 상태
null이라는 타입은 null이라는 값만 가질 수 있음
runtime에서 typeof 연산자를 이용해보면 object라고 나옴
→왜 null이라고 안 나올까? JS가 그렇게 생겨먹은 거...(?)
let n: null = null;
console.log(n); //null
console.log(typeof n); // object
undefined in JS
값을 할당하지 않은 변수는 undefined라는 값을 가짐
무언가 아예 준비가 안된 상태]
변수를 선언만 하고 값을 안 준 상태도 undefined
object의 property가 없을 때도 undefined임
runtime에서 typeof 연산자를 이용해보면 undefined라고 나옴
let u: undefined = undefined;
console.log(u); // undefined
console.log(typeof u); // undefined
JS에서의 object
직접 값을 가지지 않고 값을 가진 곳을 가리키는 정보를 담고 있음
TS에서는 좀 다름
//create by object literal
const person1 = { name: "Mark", age: 39};
//person1 is not "object" type
//person1 is "{name: string, age: number}" type
오브젝트 리터럴 타입
대문자 Object
내장 전역객체
runtime에 제공되는 준비된 재료
//create by Object.create
const person2 = Object.create({name: "Mark", age: 39});
object
'primitive type이 아닌 것'을 나타내고 싶을 때 사용하는 타입
non-primitive type
number, string, boolean, bigint, symbol, null or undefined
추석추석~
놀아도 놀아도 또 더 놀고싶고
https://bit.ly/37BpXiC
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#직장인인강 #직장인자기계발 #패스트캠퍼스 #패스트캠퍼스후기 #패캠챌린지 #한번에끝내는프론트엔드개발초격차패키지Online
'패스트캠퍼스' 카테고리의 다른 글
타입스크립트 타입 4 [패스트캠퍼스 챌린지 17일차] (0) | 2021.09.22 |
---|---|
타입스크립트 타입 3 [패스트캠퍼스 챌린지 16일차] (0) | 2021.09.21 |
타입스크립트 타입 1 [패스트캠퍼스 챌린지 14일차] (0) | 2021.09.19 |
타입스크립트 [패스트캠퍼스 챌린지 13일차] (0) | 2021.09.18 |
정규표현식 [패스트캠퍼스 챌린지 12일차] (0) | 2021.09.17 |