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 추론이 이뤄진 뒤에 사용하도록 하는게 좋은 것 같다.
728x90
'TypeScript' 카테고리의 다른 글
TypeORM DistinctQuery 가 원치 않는데도 나는 문제 (0) | 2022.05.27 |
---|