[TypeScript] Json 파일 읽어와서 type 으로 변환하기

[TypeScript] Json 파일 읽어와서 type 으로 변환하기

최근 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(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(INVOICES_JSON_PATH); const playJsonFile = readJson(PLAYS_JSON);

느낀점

any 보다는 unkown 을 사용하여 Type 추론이 이뤄진 뒤에 사용하도록 하는게 좋은 것 같다.

from http://devroach.tistory.com/68 by ccl(A) rewrite - 2021-12-19 13:01:17