2015-01-03 4 views
1

기본 클래스 (Base)와 두 개의 하위 클래스 A와 B가 있습니다.TypeScript : 기본 클래스의 다형성 반환 유형?

기본 클래스에는 현재 클래스의 인스턴스를 만들고 반환하는 메서드 f가 있습니다. A.f()를 호출 할 때 Base 대신 A의 인스턴스를 반환하고 B와 마찬가지로 인스턴스를 반환하도록하려면 어떻게해야합니까?

class Base { 
    name: string; 

    constructor(name: string) { this.name = name; } 

    f(name): Base { 
     var c:any = this.constructor; 
     return new c(name); /* or A(name) or B(name) depending on what "this" is */ 
    } 
} 

class A extends Base { /* stuff */ } 

class B extends Base { /* stuff */ } 

var a = new A("something"); 
var foo = a.f("foo") // -> returns an instance of A, not Base 
console.log(foo.constructor); // "A" 

var b = new B("something else"); 
var bar = b.f("bar"); 
console.log(bar.constructor); // "B" 
: 당신은 constructor 재산의 활용을
class Base { 
    name: string; 

    constructor(name: string) { this.name = name; } 

    f(): Base /* ? */ { 
     return Base(name); /* or A(name) or B(name) depending on what "this" is 

    } 
} 

class A extends Base { /* stuff */ } 

class B extends Base { /* stuff */ } 

var a = new A(); 
a.f() -> returns an instance of A, not Base 

답변

6

걸릴 수

: I는 A 또는 B

을이 방법을 정의해야하고 싶지 않은 것은 몇 가지 예제 코드입니다

관련 문제