簡體   English   中英

Cypress/TypeScript:在創建 object 時將值傳遞給 class 函數

[英]Cypress/TypeScript: Passing values to class functions on creation of object

這可能是一個愚蠢或愚蠢的問題,但我無法找到有關它的信息。 這可能是因為我沒有使用正確的搜索詞。

我有這個 class (有點簡化/縮短):

export class Property {
   id: string = '';
   adresses: string[] = new Array();

   constructor(propertystring: string[]) {
       this.id = propertystring[0];           
   }

   addAdress(adresstring: string) {
       this.adresses.push(adresstring);
   }
}

addPropertyInfo(property: Property) {
    ....
}

我希望能夠做到這一點:

addProperty(new Property(['0', 'City', '1', '0']).addAdress('Address string 1'));

但是 - 這給了我錯誤

TS2345: Argument of type 'void' is not assignable to parameter of type 'Property'

當然,我可以這樣做:

let property: Property = new Property(['0', 'City', '1', '0']).addAdress('Address string 1');
property.addAddress('Address string 1');

我知道,我缺少一些基本的東西。 但是什么? 似乎通過在創建到object時添加對void方法的調用,它變成了一個void參數而不是Property。

let property: Property = new Property(['0', 'City', '1', '0']).addAdress('Address string 1');

意味着該property將被分配.addAdress(...)的返回值,它碰巧什么也不返回,即void

編譯器抱怨您不能將返回類型void分配給類型Property

要以您編寫的方式使用它,您必須: -

  1. addAdress(...)方法返回this (object 本身)
addAdress() {
    this.adresses.push(adresstring);
    return this;
}

或 2. 分為兩個步驟(如您所述)

const property: Property = new Property(['0', 'City', '1', '0']);
property.addAdress('Address string 1');

更新:w.r.t 您在 TS Playground 上提供的示例

function addPropertyInfo(property: Property) {    
}

addPropertyInfo(new Property(['0', 'City', '1', '0']).addAdress('Address string 1'));

與我上面的回答類似, addPropertyInfo(...)需要類型Property並且您為其提供類型void 您可以嘗試按照上面列出的兩種方法之一來解決此問題。

暫無
暫無

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

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