簡體   English   中英

設置任何javascript對象屬性的類型

[英]set type of any of javascript object property

我有以下javascript對象

 venue = {
    id: 0,
    name: '',
    venueimage_set: [
      {
        imageurl: '',
      },

    ]...

然后在我的代碼中稍后更改對象:

 this.venue.venueimage_set[+image] = this.venue.venueimage_set[+image].imageurl;

為了使圖像查看器正常工作,我只需要圖像的url,而不是圖像url所包含的鍵。 因此,我將密鑰中的內容作為變量並將數組位置設置為密鑰值(圖像url)。

然后我聽到這聲音。

ERROR in mainroot/venuepage/venuepage.component.ts(171,25): error TS2322: Type 'string' is not assignable to type '{ imageurl: string; }'. mainroot/venuepage/venuepage.component.ts(175,127): error TS2339: Property 'imageurl' does not exist on type 'string'.

我希望打字稿忽略打字,讓我來做。 我怎么會

這是您要執行的操作的類型安全版本:

function toVenue<T>({id, name, venueimage_set}: T) {
  return {
    id,
    name,
    venueImageSet: venueimage_set.map(el => el.imageurl)
  };
}

可以在設置venue時使用:

const venue = toVenue({
    id: 0,
    name: '',
    venueimage_set: [{
       imageurl: '',
    }]
});

這里是不安全的版本(請不要這樣做):

this.venue.venueimage_set[+image] = this.venue.venueimage_set[+image].imageurl as any;

暫無
暫無

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

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