[英]how to initialize constructor arguments by passing JSON at the time of object creation in typescript
[英]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
要以您編寫的方式使用它,您必須: -
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.