通常,當我創建 TypeScript 應用程式時,我遵循 OOP 不可變資料理念。
因此,假設我有兩個相互參考的類,A 類和 B 類。
class A {
public readonly item: B;
public constructor (item: B) {
this.item = item;
}
}
class B {
public readonly item: A;
public constructor (item: A) {
this.item = item;
}
}
現在不可能創建A類的實體,因為建構式中需要B類來實作不變性,而B類需要A類的實體。
需要先創建類 A 和 B 的實體,并將 item 屬性設定為 undefined,然后在類實體化后分別分配參考。但是這個解決方案會破壞不變性,因為它允許用戶覆寫 item 屬性。
有什么建議的解決方案嗎?
uj5u.com熱心網友回復:
一種方法是使用 getter 實作惰性求值,
class A {
private readonly _item: () => B;
public get item(): B {
return this._item();
}
public constructor(_item: () => B) {
this._item = _item;
}
}
class B {
public readonly _item: () => A;
public get item(): A {
return this._item();
}
public constructor(_item: () => A) {
this._item = _item;
}
}
const a: A = new A(() => b);
const b: B = new B(() => a);
console.log(a.item === b); // true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411842.html
標籤:
上一篇:更新貓鼬中的資料
