Тип '(d: {value: number}) => число' нельзя назначить типу 'число' - PullRequest
0 голосов
/ 04 апреля 2020

Пока работает код, средство проверки типов жалуется на то, как этот метод делегата назначается свойству ...

Свойство fontSize ожидает тип number. Однако это преобразование, и каким-то образом существует объект шрифта со свойством value, который необходимо преобразовать в тип number.

Сигнатура метода извлекает (destruct of object?) Свойство value из массива объектов шрифта. Примером значения будет 97.

input: 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'

Конечно, просто присвоение числового значения решает проблему с задержкой, но цель здесь преобразовать входящие значения размера шрифта в подходящий масштаб. Как это сделать и удовлетворить проверку типов?

Спасибо!

Печатать:

Расположение: node_modules> @antv> data-set> lib> transform> 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;
    }

1 Ответ

0 голосов
/ 04 апреля 2020

Спасибо @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;
    },

Похоже, мне нужно будет посмотреть, есть ли еще исправление ошибки или запрос файла ...

tag-cloud.ts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...