2016-08-01 3 views

답변

1

생성자에서는 민간 분야를 설정하지 l
그래서

constructor(l : Logger) { 
    this.foo = "bar"; 
    this.l = l; 
    this.l.log(this.foo); 
} 

또는 (크레딧 torazaburo로 이동)

constructor(private l : Logger) { 
    this.foo = "bar"; 
    this.l.log(this.foo); 
} 

참조 JSFiddle here

+0

또는 'constructor (private l : Logger)'. –

+0

thx - 통합 – DAXaholic

0

처럼 시도 this.l에 할당 된 적이 없습니다. 따라서 고정 코드 :

class Logger { 
    constructor() {} 

    public log(msg : string) { 
    console.log(msg); 
    } 
} 

class Greeter { 
    public foo: string; 
    private l : Logger; 
    constructor(l : Logger) { 
    this.foo = "bar"; 
    this.l = l; // !!!!!This line is the fix!!!!! 
    this.l.log(this.foo); 
    } 
} 

let g = new Greeter(new Logger()); 
console.log(g.foo);