簡體   English   中英

Typescript用“ as”從對象中刪除其他屬性?

[英]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強制轉換都是編譯時構造,在實際執行代碼時,它們在運行時不執行任何操作。

您可以使用lodashpick方法:

const subset = _.pick(obj, ['x', 'y'])

或者,如果您不想引入一個庫,則可以通過解構來實現:

const subset = (({ x, y }) => ({ x, y }))(obj);

另一種更高級的技術是將實際類與reflect-metadata和修飾符一起使用,以便能夠在運行時對代碼內容做出更好的決策。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM