자바스크립트는 연산자 오버로딩을 지원하지 않는다.

마찬가지로 타입스크립트 또한 지원하지 않는다.

하지만 유사 연산자 오버로딩을 만들어쓰는 방법이 있다.

위처럼 정의해서 쓰게 되면 마치 연산자 오버로딩한 것과 같은 효과를 얻게 된다.

함수형 프로그래밍에서 함수를 계속 연달아 쓰는데 아닌 경우도 있지만

대체로 배열은 끝까지 배열, 문자열은 끝까지 문자열을 결과값으로 갖는다.

그 특징이 연산이랑 똑같기 때문에 이에 착안한 것이다.

JS/TS에서는 클래스 밖에서도 얼마든지 함수를 정의할 수 있으니까

function P(x, y){
	return new Point(x, y);
}

라고 쓴다면

(P(2,3)) ["+"] (P(3,7)) //new Point(5, 10)

이렇게 간단하게 쓰는 것도 가능하다.

Array.prototype["+"] = function (p2){
	return this.map((e, i) => e + p2[i])
}

라고 쓰면

([2,3]) ['+'] ([5,7]) // [7,10]

라고 쓸 수도 있다.

+ Recent posts