2017-05-04 14 views
3

이제 배열 프록시를 구현하고 싶습니다. 여기 내 코드는typescript에서 배열 메서드를 확장하고 재정의하는 방법

내 override push 메소드가 호출되지 않은 것 같습니다. foo 변수는 ArrayProxy가 아닌 Array의 인스턴스입니다.
내 타이프 라이터 버전 : 2.3.2
tsconfig.json
MYTEST

{ 
    "compilerOptions": { 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "moduleResolution": "classic", 
     "target": "es5", 
     "module": "system", 
     "outFile": "js/test.js" 
    } 
} 

나는 몇 가지 해결책을 찾았지만 실패했습니다.

class MyNewArray<T> extends Array<T> { 
    getFirst() { 
     return this[0]; 
    } 
} 

var myArray = new MyNewArray<string>(); 
myArray.push("First Element"); 
console.log(myArray.getFirst()); // "First Element" 
David Sherret
에서

하지만 난 오류가 발생했습니다.

Uncaught (in promise) Error: myArray.getFirst is not a function 
    Evaluating http://localhost:8080/application/test/application/ts/bind_test 
    Loading application/ts/bind_test 
    at Object.execute (test.js:1733) 
    at j (system.js:4) 
    at E (system.js:4) 
    at O (system.js:4) 
    at system.js:5 

내가 모두 ArrayProxy의 생성자에서 슈퍼 호출 후 Object.setPrototypeOf(this, ArrayProxy.prototype);를 추가 할 때 작동 갱신 . @ Aluan Haddad 덕택입니다.

답변