이것은 매우 고안된 예이지만 클래스 함수 어딘가에 변수 _this
을 생성한다고 가정 해 봅시다._this라는 변수를 생성하면이 변수와 충돌해야합니까?
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
예상대로 컴파일 된 코드의 관련 부분은 다음과 같이 보이기 때문에 우리가 changeName
함수를 호출 할 때이 작동하지 않습니다 :
var _this = this;
var _this = {};
(function() {
_this.name = name;
})();
이 나쁜 자바 스크립트입니다 : 우리가 서로를 덮어 두 var
선언이 다른. 컴파일러에서 만든 _this
이 내 _this
으로 덮어 쓰여지고 있습니다.
내가 볼 수있는 한,이 동작은 TypeScript 사양에 지정되어 있지 않습니다.
왜 충돌해야합니까? 컴파일러가 _this
이라는 변수를 생성하고 내 변수와 컴파일러에서 생성 한 변수를 서로 짓밟지 않도록 _this2
과 같이 자동으로 생성 된 변수를 자동으로 생성했는지 감지 할 수 있습니까?
이것은 나에게 매우 심각한 문제처럼 보입니다. 최소한 언어 사양으로 다루어야합니다. 공식 응답을 위해 [TypeScript issue tracker] (http://typescript.codeplex.com/workitem/list/basic)에 게시하는 것이 좋습니다. – joshuapoehls