TypeScript ネストしたオブジェクトを配列にする

こんなJSONがあって親エリアがネストされている場合

エリアのJSON

{
    "area_code": "HNL",
    "area_name": "Honolulu",
    "parent_area": {
        "area_code": "HI",
        "area_name": "Oahu Island",
        "parent_area": {
            "area_code": "5",
            "area_name": "Hawaii",
            "parent_area": {
                "area_code": null,
                "area_name": "Root"
            }
        }
    }
}
Area.ts


class Area {
    code: string; // エリアコード
    name: string; // エリア名
    constructor(code: string, name: string) {
        this.code = code;
        this.name = name;
    }
}
ネストした親オブジェクトをエリアクラスにして配列にする

function nestAreas(areaObj: any, key: string, areas: Area[] = []) {
    areas.push(new Area(areaObj.area_code, areaObj.area_name));
    if (areaObj[key] && typeof areaObj[key] === 'object') {
        nestAreas(areaObj[key], key, areas);
    }
    return areas;
}