0

虽然代码有效,但类型检查器抱怨如何将此委托方法分配给属性......

属性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;
    }
4

1 回答 1

0

感谢@bergi,指出打字中存在错误!

打字是:

export interface Options {
    fields?: [string, string];
    font?(): string;
    fontSize?: number;          //  <---- the trouble!
    rotate?: number;
    padding?: number;
    size?: [number, number];
    spiral?: 'archimedean' | 'archimedean' | 'rectangular';
    timeInterval?: number;
    imageMask?: HTMLImageElement;
}

现在我做到了:

export interface Options {
    fields?: [string, string];
    font?(): string;
    fontSize?({}): number;          //  <---- the fix!
    rotate?: number;
    padding?: number;
    size?: [number, number];
    spiral?: 'archimedean' | 'archimedean' | 'rectangular';
    timeInterval?: number;
    imageMask?: HTMLImageElement;
}

并更改属性分配,从:

    fontSize(d: { value: number }) {
      const size = ((d.value - min) / (max - min)) ** 2;
      return size * (17.5 - 5) + 5;
    },

至:

    fontSize: (d: { value: number }) => {
      const size = ((d.value - min) / (max - min)) ** 2;
      return size * (17.5 - 5) + 5;
    },

看起来我需要查看是否有未完成的错误修复或文件请求......

标签-cloud.ts

于 2020-04-04T16:05:07.400 回答