일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- npm
- 타입스크립트
- 타입 챌린지
- 이펙티브 타입스크립트
- mysql boolean
- configservice
- 타입챌린지
- node.js
- 코딩테스트
- typeorm
- nestjs
- 와글와글
- Type Challenge
- network
- typescript type challenge
- configmodule
- 해커톤
- 2024년 회고록
- TypeScript
- 스터디
- type-safe configservice
- 굿바이 2024년
- HTTP
- 백엔드
- TypeScript 타입챌린지
- mysql
- 회고
- 월간cs
- microsoft azure openai
- 회고록
- Today
- Total
iamkanguk.dev
[TS] 빈 객체에는 어떤 타입을 사용해야 할까요? 본문
코드를 작성하다가 빈 객체의 타입에 대해서 갑자기 궁금해지기 시작했다. 빈 객체에는 어떤 타입을 사용해야 할지 알아보자.
1. {} (빈 객체)의 의미
타입스크립트에서 빈 객체({})는 "any non-nullish value"를 의미한다. 다시 말해 null을 제외한 모든 값들을 허용한다는 의미이다.
실제로 다음과 같이 코드를 작성하면 에러가 나지 않는다.
type EmptyObject = {};
const temp1: EmptyObject = 'hello world!';
const temp2: EmptyObject = 1111;
undefined 값을 넣으면 에러는 발생한다. 프로젝트 코드를 작성하면서 이 부분을 의외로 많이 실수해서 정리하게 되었다..
2. 어떻게 사용할 것인지?
(1) 아무것도 들어가지 않을 빈 객체를 의미하고 싶을 때
Record<string, never>를 사용하면 된다. Property 값에 never를 지정하면서 아무 값도 들어가지 않을 객체라고 알려준다.
참고로 Record 타입은 Record<Key, Value> 형태로 사용하면서 키가 Key 타입이고, 값이 Value 타입인 객체 타입을 생성한다.
(2) 객체를 의미하는 경우
Record<string, unknown>를 사용하면 된다. Property에 unknown을 지정하면서 모든 타입의 값이 할당될 수 있다는 객체임을 명시해준다.
참고자료
- https://blog.hoseung.me/2021-09-15-typescript-empty-object
타입스크립트의 {} 타입
'빈 객체'를 타입으로 정의하는 방법을 알아봅시다.
blog.hoseung.me
[TS] 빈 객체에 대한 올바른 타입
{} 을 타입으로 사용하지 않기 빈 객체에 {} 타입을 지정하면 @typescript-eslint/ban-types 경고가 발생한다. {} 타입은 null이 아닌 모든 값이라는 뜻이기 때문에 타입을 지정했음에도 컴파일 때 이 값이
db2dev.tistory.com
'Language > TypeScript' 카테고리의 다른 글
[TypeScript + Type-Challenge] Equal Type 분석하기 (2) | 2024.10.24 |
---|---|
[TypeScript] T extends U ? X : Y 는 정확히 어떤 의미일까? (0) | 2024.03.16 |