虽然代码有效,但类型检查器抱怨如何将此委托方法分配给属性......
属性fontSize
需要number
. 但是,它是一种转换,并且不知何故有一个具有value
需要转换为 type的属性的字体对象number
。
方法签名从字体对象数组中提取(对象的破坏?)属性value
。值的示例是 97。
输入:fontObj => { ..., value }
const onload = () => {
const dv = new DataSet.View().source(data);
const range = dv.range('value');
const [min, max] = range;
dv.transform({
type: 'tag-cloud',
fields: ['name', 'value'],
imageMask: this.imageMask,
font: () => {return 'Verdana'},
size: [w, h], // The width and height settings are best based on imageMask Make adjustments
padding: 0,
timeInterval: 5000, // max execute time
rotate: 0,
/* rotate() {
return 0;
}, */
fontSize: (d: { value: number }) => { // <---- issue here!
console.log(d);
const size = ((d.value - min) / (max - min)) ** 2;
return size * (17.5 - 5) + 5;
},
});
类型检查器报告错误:
类型 '(d: { value: number }) => number' 不可分配给类型 'number'
当然,仅分配一个数字值就可以解决掉毛问题,但这里的目标是将传入的字体大小值转换为合适的比例。如何做到这一点并满足类型检查器?
谢谢!
打字:
位置:node_modules > @antv > 数据集 > lib > 转换 > tag-cloud.d.ts
export interface Options {
fields?: [string, string];
font?(): string;
fontSize?: number;
rotate?: number;
padding?: number;
size?: [number, number];
spiral?: 'archimedean' | 'archimedean' | 'rectangular';
timeInterval?: number;
imageMask?: HTMLImageElement;
}