gpt4 book ai didi

带有 getter 的 typescript 可选属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:41 25 4
gpt4 key购买 nike

这是一个简化的例子:

class PersonParms{
name:string;
lastName:string;
age?:number;
get fullName(){return this.name + " " + this.lastName;}
}

class Person{
constructor(prms:PersonParms){
}
}

new Person({name:'John',lastName:'Doe'}) // ts error: Property 'fullName' is missing in type '{ name: string; lastName: string; }'.

想法是传递一个文字对象作为 PersonParms 的 intizalizer,但是有了那个 getter,你既不能声明 getter 可选,也不能将属性添加到对象文字。还有其他方法可以实现吗?

最佳答案

非常有趣。我想,你应该report an issue到 TypeScript,因为方法可以是可选的(见下文),但属性 getter 不是。这很奇怪.. 作为一种解决方法,我可以建议两种变体。一个不错的:

class PersonParms {
name:string;
lastName:string;
age?: number;

getFullName?() {return this.name + " "+this.lastName;}
}

第二个是 hacky,因为我们在传递给构造函数时将所有属性设为可选。

class PersonParms {
name:string;
lastName:string;
age?: number;

get fullName(){return this.name + " "+this.lastName;}
}

class Person{
constructor(prms: Partial<PersonParms>){
}
}

关于带有 getter 的 typescript 可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com