일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MySQL
- IntelliJ
- ruby
- 자바
- 돌연변이 테스팅
- kotlin
- resizer 구현
- InnoDB
- Convariance
- 코틀린
- 객체지향
- 의존성역전원칙
- Java
- 코틀린 in
- 공짜블로그
- standard input
- 코틀린 out
- standard output
- JPA
- Mutation testing
- resize image with go
- image resizer with go
- change refresh rate
- 개인블로그 hugo
- Pitest
- hugo 로 블로그
- output stream
- cli 만들기
- 코틀린 노트북
- Test
Archives
- Today
- Total
Rlog
[TypeScript] Json 파일 읽어와서 type 으로 변환하기 본문
728x90
최근 TypeScript 를 가끔씩 쓰면서 Json 파일을 읽어와서 쉽게 Type 으로 Convert 할 수 없을까 고민해봤다.
그래서 Generic 을 이용해서 Convert 하는 방식을 생각했다.
이전에 필수적으로 알아야 할 선행지식이 있는데
바로 TypeScript 의 "unkown" 이라는 개념이다.
any 랑 비슷하다고 생각할 수 있는데, any 보다는 Java 로 치면 Object 느낌에 가깝다.
사용하는 측에서 타입 추론이 이루어질 수 있게 도와주므로
Json 을 Unknwon 으로 가져오고 Generic Type 으로 추론해야겠다는 생각이 들었다.
따라서 아래와 같은 코드를 작성할 수 있었다.
const ENCODING_TYPE = 'utf8';
const NOT_EXIST_JSON_FILE_ERROR_MESSAGE = "JSON FILE 이 존재하지 않습니다.";
const jsonParserUnknown = (jsonString: string) : unknown => JSON.parse(jsonString)
export default function readJson<T>(path: string) : T {
const jsonBuffer = readFileSync(path, {encoding: ENCODING_TYPE})
const result = jsonBuffer;
if (!result) {
throw Error(NOT_EXIST_JSON_FILE_ERROR_MESSAGE);
}
return jsonParserUnknown(result) as T;
}
클라이언트 측에서 API 를 사용할때는 아래와 같이 사용할 수 있다.
const invoiceJsonFile = readJson<Screening[]>(INVOICES_JSON_PATH);
const playJsonFile = readJson<StaticMovie>(PLAYS_JSON);
느낀점
any 보다는 unkown 을 사용하여 Type 추론이 이뤄진 뒤에 사용하도록 하는게 좋은 것 같다.
'TypeScript' 카테고리의 다른 글
TypeORM DistinctQuery 가 원치 않는데도 나는 문제 (0) | 2022.05.27 |
---|