2017-08-02 94 views
2

考慮下面的代碼TypeScript不尊重只能獲取屬性?

class A { 
    private _f: string; 
    get f(): string { 
     return this._f; 
    } 
} 
class B { 
    f: string;  
    static x(a: A): B { 
     // I expect an error in next line because A does not have a setter for 'f' 
     return a; 
    } 
} 
let a = new A(); 
// this line gives error, as expected 
a.f = "safe"; 
let b = B.x(a); 
// this will mutate object that I want to be immutable! 
b.f = "ouch!"; 

爲什麼會出現這種情況? (試用TS 2.4和2.3)。

回答