이전에 자바로 풀이한 문제를 타입스크립트로 다시 풀이합니다.

문제 설명 및 풀이 방식은 링크를 통해 볼 수 있습니다.

function solution(numbers) {
    let answer = ''; //아래에서 바뀌므로 let으로 선언

    const stringNumbers: string[] = new String[numbers.length];

    for (const index in numbers) {
        stringNumbers[index] = numbers[index].toString();
				//stringNumbers.push(numbers[index]);

    }

		//정렬 과정 수정 필요
    stringNumbers.sort();

    for (const str in stringNumbers) {
        answer += str;
    }

    if (stringNumbers[0] == "0") {
        return "0";
    }

    return answer;
}
function solution(numbers) {
    const answer: string[] = numbers.map(String)
        .sort((a, b) => (b + a) - (a + b))
        .join('');

    //큰 순서대로 정렬했는데 가장 앞에가 0일 경우
    //주어진 numbers가 [0, 0, 0, ...]이므로 000..이 아닌 0을 출력
    return answer[0] === '0' ? '0' : answer;
}

[참고 자료]

Javascript - Array map 사용법

[Javascript] 배열 정렬하기 (오름차순, 내림차순, 문자열, 객체)