[英]Typescript removing other properties from object with “as”?
我想通過JSON發送對象,該對象實現了一個接口,但是還具有其他一些我不想發送的屬性。 如何才能“刪除”其他所有內容,以便我只有接口屬性的純對象?
例:
interface IBlock{
x:number;
y:number;
}
class Block implements IBlock{
public z:number;
}
...
send(JSON.stringify(new Block() as IBlock));
responseIWant = "{x:0,y:0}";
responseIGet = "{x:0,y:0,z:0}";
interfaces
和使用as
強制轉換都是編譯時構造,在實際執行代碼時,它們在運行時不執行任何操作。
您可以使用lodash
的pick
方法:
const subset = _.pick(obj, ['x', 'y'])
或者,如果您不想引入一個庫,則可以通過解構來實現:
const subset = (({ x, y }) => ({ x, y }))(obj);
另一種更高級的技術是將實際類與reflect-metadata
和修飾符一起使用,以便能夠在運行時對代碼內容做出更好的決策。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.