0
發佈的關於typecript和嵌套類的過去的答案建議使用該語言的聲明合併功能。我曾與下面的例子,它執行按預期嘗試這樣做,但會產生一個編譯器消息:Typescript:模擬嵌套類+私人成員訪問
foo.ts(9,37): error TS2341: Property '_bar' is private and only accessible
within class 'Foo'.
...因爲寫這似乎很奇怪,類Bletch 是美孚的成員。
有沒有最佳實踐方法來抑制有關訪問外部類的私有成員的錯誤?(我知道我可以(this._foo as any)
取代this._foo
,但是看起來應該有更多更優雅的方式......)
例子:
export class Foo {
constructor(private _bar: number){}
//...
}
export module Foo {
export class Bletch {
constructor(private _foo: Foo) {}
barf(): number { return this._foo._bar; }
}
}
let a = new Foo(57);
let b = new Foo.Bletch(a)
console.log(b.barf());
好的,所以定義一個與朋友可訪問的成員的接口,對吧? –
我喜歡你的最後一個例子,儘管聲明類Bletch的語法似乎有點被強制。我發現唯一的缺點是Bletch似乎被VS Code IntelliSense標記爲「匿名類」。 –
P.S.我對你的示例代碼提出了一個小調整,擺脫了額外的私有屬性。 –