일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- autosize
- 반공변성
- 호이스팅
- recoil
- dfs
- 타입 좁히기
- 결정 알고리즘
- webpack
- 인터섹션
- CI/CD
- 공변성
- Promise
- tailwind
- RTK Query
- Cypress
- CORS
- 투포인터
- 이분 검색
- app router
- SSR
- map
- useAppDispatch
- React
- ESlint
- 태그된 유니온
- 무한 스크롤
- Jest
- TS
- async/await
- 리터럴 타입
- Today
- Total
목록타입 좁히기 (2)
짧은코딩
브랜드 속성 브랜드 속성은 객체를 구별할 수 있는 속성을 하나 추가하는 방법이다. 예시 interface Money { __type: 'money'; amount: number; unit: string; } interface Liter { __type: 'liter'; amount: number; unit: string; } 이 코드에서는 "__type" 이 속성을 브랜드 속성이라고 한다. 속성 이름은 다른 속성과 겹치지 않는 이름이면 다 가능하다. 이렇게 브랜드 속성을 사용하는 것을 브랜딩이라고 한다. 타입 좁히기 TS에서 타입을 구분하는 것은 중요하다. 대부분은 TS가 자체적으로 코드를 파악해서 타입을 추론하는 제어 흐름 분석(Control Flow Analysis)을 한다. 하지만 제어 흐름 분석이..
타입 넓히기 런타임 시 모든 변수는 유일한 값을 가진다. 하지만 타입스크립에서는 코드를 정적 분석하는 시점에서 변수는 가능한 값들의 집합인 타입을 가진다. 즉 타입을 명시하지 않으면 타입 체커는 할당 가능한 값들의 집합을 유추한다. 이러한 과정을 타입 넓히기(widening)이라고 부른다. 타입 넓히기의 문제점 -실행은 되지만 에디터에 오류가 나는 코드 interface Vector3 { x: number y: number z: number } function getComponent(vector: Vector3, axis: 'x' | 'y' | 'z') { return vector[axis] } let x = 'x' let vec = { x: 10, y: 20, z: 30 } getComponent(ve..