获取
Property 'conf' is missing in type '{ text: string; label: string; }'.
来自这个对象:
{
//...
digitalSkills: {
skills: [
{
name: '...',
tooltip: {
text: '...',
label: '...'
}
},
{
name: '...',
tooltip: {
text: '...',
label: '...'
}
}
],
//...
}
//...
}
来自此设置:
export interface TooltipConfig {
text:string;
label:string;
conf?:string;
}
export class Tooltip implements TooltipConfig {
text:string;
label:string;
conf:(any);
constructor(c:TooltipConfig) {
this.text = c.text;
this.label = c.label;
c.conf && (this.conf = c.conf);
}
}
export interface Section {
//...
digitalSkills?:{
skills?:{
name:string,
tooltip:Tooltip
}
}
我的问题是我以相同的方式在其他类中声明可选参数,它们似乎工作得很好。我不明白这里有什么问题以及如何解决它。
注意:通过将(可选?)参数添加为空字符串,我不能轻松修复。我想知道这个原因和一般原则。
尝试正确理解和学习TypeScript。
答案 0 :(得分:2)
您需要在conf
类中使Tooltip
属性可选。
export class Tooltip implements TooltipConfig {
text:string;
label:string;
conf?:(any);
constructor(c:TooltipConfig) {
this.text = c.text;
this.label = c.label;
c.conf && (this.conf = c.conf);
}
}
或者您需要使用TooltipConfig
接口作为tooltip
接口中Section
属性的类型。
export interface Section {
//...
digitalSkills?:{
skills?:{
name:string,
tooltip:TooltipConfig
}
}
或者您可以在对象创建中实例化Tooltip类:
{
//...
digitalSkills: {
skills: [
{
name: '...',
tooltip: new Tooltip({
text: '...',
label: '...'
})
},
{
name: '...',
tooltip: new Tooltip({
text: '...',
label: '...'
})
}
],
//...
}
//...
}
看看这个sample code。