Maybe this functions can help to get an approach. You should translate them into TypeScript, or ES6.
function degToRad(n)
{
return n * Math.PI / 180;
}
function radToDeg(n)
{
return n * 180 / Math.PI;
}
function getDistance(lat1, lon1, lat2, lon2, mode)
{
var R = 6371; // Earth radius in km
switch(mode)
{
case 'spherical':
default:
var dLon = degToRad(lon2 - lon1);
lat1 = degToRad(lat1);
lat2 = degToRad(lat2);
var d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLon)) * R;
break;
case 'haversine':
var dLat = degToRad(lat2 - lat1);
var dLon = degToRad(lon2 - lon1);
lat1 = degToRad(lat1);
lat2 = degToRad(lat2);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
break;
case 'rectangle':
var x = degToRad(lon2 - lon1) * Math.cos(degToRad(lat1 + lat2) / 2);
var y = degToRad(lat2 - lat1);
var d = Math.sqrt(x * x + y * y) * R;
break;
}
return d;
}