2013-06-21 2 views
5

에는 기본 라이브러리에서 겹쳐 쓰기와 같은 함수를 호출하는 방법이 있습니다.기본 클래스의 Typescript 호출 함수

기본 클래스

export class BaseClass { 
    constructor() { 
    //do something asynchronous 
    //than call initialized 
    } 
} 

상속 클래스는 추상 클래스의 추상적 회원으로 초기화 한 필요가 그렇게하기 위해

export class InheritanceClass extends BaseClass { 
    initialized() { 
    // get called from base class 
    } 
} 

답변

7

는이 같은 의미합니까 :

class Base { 
    constructor(){ 
     setTimeout(()=>{ 
      this.initialized(); 
     }, 1000); 
    } 

    initialized(){ 
     console.log("Base initialized"); 
    } 
} 

class Derived extends Base { 
    initialized(){ 
     console.log("Derived initialized"); 
    } 
} 

var test:Derived = new Derived(); // console logs "Derived initialized" - as expected. 

작품은 Playground에서 잘 (버그라고 생각되는 setTimeout()의 이상한 빨간색 밑줄을 무시하십시오. 컴파일되고 정상적으로 실행됩니다.)

Base에있는 메소드가 필요하지만 Derived (또는이 경우처럼 super.initialized()으로 전화하지 않고)에서 재정의 할 수 있습니다.

+0

그래서 기본 클래스가 Animal이고 파생 클래스가 Dog 인 경우 도보 방법을 사용할 수 있지만 뱀과 새는 동물 클래스에서 슬라이더와 플라이 메서드를 사용하면 어떨까요? –

+0

다른 사용 사례. TypeScript에서 추상 멤버가 필요 없다는 것은 아닙니다.이 답변은 "비동기식 작업을 수행 한 다음 초기화 된 호출"과 "baseclass와 같은 함수를 호출 할 수있는 기능에 대한 OP의 요청을 정확하게 해결한다는 것입니다. 보수" – JcFx

2

. 이 그러나 기능이 요청 된 지원하지 않습니다 현재 타이프과 오픈 작업 항목이 :

http://typescript.codeplex.com/workitem/395

+0

나는 이것이 옳다고 확신하지 않습니다. 아래를 참조하십시오. – JcFx

+0

초기화가 기본에 존재하지 않게하려면 응답입니다. 그렇지 않으면 무시됩니다. 엄밀히 말하자면 둥근 못생긴 방법이 있지만 권장해서는 안됩니다. –

+0

권장하지 않아야 할 사항은 무엇입니까? 이것은 단순한 오버라이드 일뿐입니다. OP는 추상적 인 방법을 요구하지 않았습니다. 단지 그것을 대체 할 수있는 능력입니다. – JcFx

관련 문제