infowWindow.Close가 안먹혀요

일다 코드 먼저 보여드리겠습니다.

var open = false
.
.
.
const addMarker = (
lat: number,
lng: number,
map: kakao.maps.Map,
idx: number,
clickData: PlaceData[],
) => {
const imageSrc = ‘images/mapPage/Marker.png’;
let imageSize = new kakao.maps.Size(30, 30);

let markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize);
var markerPosition = new kakao.maps.LatLng(lat, lng);

var marker = new kakao.maps.Marker({
position: markerPosition,
image: markerImage,
});

markers[idx] = marker; //이미지랑 위치만 가지고 있는 객체

kakao.maps.event.addListener(markers[idx], ‘click’, () => {
console.log(open);
openInfoWindow(map, markers, lat, lng, idx, clickData); //placeData는 사실 없어도 문제없는 데이터
});

marker.setMap(map);
};

// 마커틀릭시 인포윈도우 창을 띄어주는 함수
const openInfoWindow = (
map: kakao.maps.Map,
markers: kakao.maps.Marker[],
lat: number,
lng: number,
idx: number,
clickData: PlaceData[],
) => {
var iwContent = windowContents(idx, clickData); //윈도우의 HTML String

var iwPosition = new kakao.maps.LatLng(lat, lng); //윈도우 인포를 띄울 위치

var infoWindow = new kakao.maps.InfoWindow({
position: iwPosition,
content: iwContent,
removable: true,
});

if (open === false) {
infoWindow.open(map, markers[idx]);
open = !open;
} else {
infoWindow.close(); //작동X
open = !open; //정상작동
}
};

else문에있는 infoWindow.close();함수가 동작하지 않습니다. 분명 조건문의 조건은 통과했음에도 작동하지 않습니다. 어디에 문제가 있는건가요?

openInfoWindow 함수에서 매번 infowindow를 새롭게 만들고 새로 생성한 인포윈도우를 열고, 닫는 로직입니다.
그래서 처음 마커를 클릭할 때는 새롭게 인포윈도우를 생성해서 지도에 표시하지만
클릭해서 닫을 때에는 이전에 생성된 infowindow를 닫는 게 아니라 다시 infowindow를 새로 만들고 이를 닫는 로직이라 동작이 되지 않는 것처럼 보입니다.
infowindow를 닫을 때는 이미 지도에 표시된 인포윈도우가 닫히게 구현해 주세요.