所以我有我認爲是一個共同的困境。我有一個數據庫對象,一個來自文檔數據庫的常規JS對象,然後我想將該對象發送給我的客戶端。但是一些領域很敏感,不能向客戶透露。聲明式地將一個JSON對象放在Typescript中發送給客戶端?
在C#世界,我只想用聲明反光編程屬性附加到我的C#對象,指明哪些場是客戶消費,像這樣的安全:
[SafeForClient]
string MyProperty { get; set; } // send to client.
string SecretData { get; set; } // Do NOT send to client.
然後我會使用反射收集所有[SafeForClient]
屬性,構建我的JSON並將其發送到電線上。
儘管在JavaScript世界中沒有這樣的運氣。在這個級別上沒有聲明式元編程。
我在打字稿像這樣定義我的類型:
export type RoomForClient = {
id: number;
name: string;
description: string;
exits: {[index in Direction]?: Exit }
}
export type Room = RoomForClient & {
hiddenFlags: ScriptData;
}
所有,它使給客戶端的房間的數據只是總房價數據的一個子集。目前,我有一個屬性不應該被包含,這並不是那麼糟糕......我可以很容易地從對象中刪除這個屬性。但在未來,當增加更多...我將被要求在兩個地方添加這些屬性名稱;一次在Room
的定義中,並且一次在方法中實際減少。
如果我有一個「房間」對象,而沒有手動指定所有應該或不應該複製的字段,我該如何創建一個「RoomForClient」對象?所有這些類型的信息都會在運行時被刪除,所以我實在想不到在不違反DRY原則的情況下這樣做的方法。我認爲這是一種代碼味道。
任何想法?