컴파일 된 TypeScript (CoffeeScript로 시도 됨)의 출력을 가져 와서 WebStorm에 넣었습니다. 내가 할 때, JSHint는 "Snake 함수의 내부 선언을 위해"Snake가 이미 정의되어있다 "고 불평한다.JSHint는 "이미 정의되었습니다"IIFE 모듈 내부의 오류가 실제로 유효합니까?
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.move = function (meters) {
alert(this.name + " moved " + meters + "m.");
};
return Animal;
})();
var Snake = (function (_super) {
__extends(Snake, _super);
function Snake(name) { //Warning registered here
_super.call(this, name);
}
Snake.prototype.move = function() {
alert("Slithering...");
_super.prototype.move.call(this, 5);
};
return Snake;
})(Animal);
나는 /*jshint -W004 */
와 경고를 해제 할 수 있지만, 우리가 함수 내 범위 때문에 경고가 유효하지 않은 것 같다.
이제 이상한 부분. 함수 선언 다음에 __extends
호출을 이동하면 오류가 사라집니다.
function Snake(name) {
_super.call(this, name);
}
__extends(Snake, _super);
나는 정말로 두 가지 질문이 있지만 첫 번째 질문은 내 대답을 포기할 주요 질문입니다.
- 이 경고는 유효합니까?
__extends
호출을 함수 선언 아래로 이동시키는 결과는 무엇입니까?