-
Typescript promise generic type기타/메모장 2022. 8. 11. 22:30
문제
Javascript에서 Typescript로 넘어오면서 타입의 사용법을 조금씩 공부하고 있다.
그러면서 promise를 return 하는 경우를 타입으로 표현해야 하는 경우가 생겼다.
promise의 경우 제네릭을 이용하여 어떠한 타입을 이후에 넘겨줄지를 미리 지정할 수 있다.
이때 promise에서는 resolve와 reject를 이용하여, 비동기적으로 결과값을 return 하거나, 에러를 return 할 수 있다.
여기서 에러값의 경우 보통 원래 return 하려는 타입과 아예 다른 타입이다. 따라서 promise에 사용하는 제네릭을 어떻게 해야 하나 고민했다. Promise<ResultType | DOMException>와 같이 '|'를 이용해서 결과값 타입과 에러 타입을 동시에 표현해야 하나 싶었지만, 결론은 간단했다.
결론
그냥 Promise의 resolve로 반환하는 결과의 타입만 제네릭으로 신경쓰면 된다.
reject로 반환되는 에러는 항상 any로 처리되므로 신경쓰지 않는다고 한다.
function test(arg: string): Promise<number> { return new Promise<number>((resolve, reject) => { if (arg === "a") { resolve(1); } else { reject("1"); } }); }
참고
https://stackoverflow.com/questions/41078809/typescript-promise-generic-type