서비스에 카카오톡 공유하기를 구현하기가 목표였다.
kakao developers API 사이트에서 '메시지 - 카카오톡 공유' 문서를 읽고 구현하는 데까지는 어렵지 않았다.
다만, 환경이 typescript 환경이다 보니까 Kakao.Share 선언부에 타입 에러가 나고 있었다.
타입 처리를 해주기 위해 공식 문서를 뒤졌지만 공식 @type 모듈을 찾지 못했다.
공식 타입스크립트 사이트에서 찾아보았다.
가장 스타가 높은건 react-native 용이었고, kakao-sdk가 그다음에 쓰기 적절해 보였지만 cordova 용이었다.
환경에 맞게 보자면 vue-kakao-sdk 가 맞겠다 싶어 들여다보았고 찾은게 @types/kakao-js-sdk 였다.
허나, 이것도 Kakao.Link 구버전에만 대응이 되어있고, Kakao.Share은 찾을 수 없었다.
카카오가 Kakao.Link => Kakao.Share로 바꾼 시점이 2022년 5월 30일부터 순차적으로 적용한다고 했는데 현재 만들고 있는 서비스는 최신 카카오sdk이다 보니 이랬던 것 같다.
뒤진 끝에, 검색 당시 Last Updated : 6 days ago이 따끈한 라이브러리 'kakao-js-sdk'를 확인하고 Share가 잘 정의되어있는 것을 확인했다. 환경에 적용하고 이상없이 되는 것을 확인했다.
하지만 build를 하니 < "obj" is not extensible > 이슈가 발생했다. 객체가 프리징되어있어 뭔가 제대로 안 되는 듯했다. 타입만 활용해야겠다는 생각으로 node_modules/kakao-sdk/index.d.ts 를 src/types/kakao-sdk/index.d.ts 옮겨왔다. 계속 제대로 인식 못했는데 index.d.ts의 export = Kakao;를 제거하니 전역으로 잘 인식하게 되었다.
타입도 잘 인식하고, 빌드해도 잘 동작되는 것을 확인했다.
얻은 교훈은 오픈api의 변화에 모든 라이브러리들이 민감하게 대응하는 것은 아니며 개발자가 해당 부분을 잘 캐치해서 디벨롭하고 라이브러리를 배포하던가 잘 가져다 써야 된다는 것이다.