any.ts:
legend = (value) => {
return typeof value === 'boolean' ?
{
'options.legend.display': value
} :
{
'options.legned.display' : true,
'options.legend.position': value
};
};
}
any.d.ts :
legend: (value: any) => {
'options.legend.display': boolean;
options.legned.display?: undefined;
options.legend.position?: undefined;
} | {
'options.legned.display': boolean;
'options.legend.position': any;
options.legend.display?: undefined;
};
* .d.ts文件发生错误
为什么编译器不使用引号?我使用了错误的语法?
以下代码工作正常:(
any.d.ts(由我自己编辑)
legend: (value: any) => {
'options.legend.display': boolean;
'options.legned.display'?: undefined;
'options.legend.position'?: undefined;
} | {
'options.legned.display': boolean;
'options.legend.position': any;
'options.legend.display'?: undefined;
};
答案 0 :(得分:0)
如果在属性名称中使用点,则必须将它们用作字符串并使用方括号表示法访问它们,而不是dod表示法。
为什么,你问?
好吧,举个例子,你有一个legend
对象,其属性为options.legend.display
。现在假设您添加了另一个名为options
的属性,另一个名为legend
。所以,当你写这个:
legend.options.legend.display = '';
你在设置什么属性?这不是含糊不清的,因此,通过编写本文,您告诉您要在对象的属性display
中的属性legend
处设置对象的属性options
叫legend
。
如果要使用点访问该属性,则需要编写:
legend['options.legend.display'] = '';
如果要使用方括号表示法访问嵌套属性:
legend['options']['legend']['display'] = '';
知道了吗?