Тип не может быть назначен в response-chartjs-2 - PullRequest
0 голосов
/ 13 сентября 2018

Я использую реагирую и машинопись. Я получаю ошибку с типом. Как я могу решить это?

позиция имеет тип string. http://www.chartjs.org/docs/latest/configuration/legend.html

[React + ts + реагировать-chartjs-2]

import React from 'react';
import {Pie} from 'react-chartjs-2';

export default class Chart extends React.Component{
  constructor(props) {
     super(props);
     this.state = { };
  }

  render() {
    let options = {
      legend: {
        position:'bottom',
      }
    };

    return (
      <Pie options={options}  />
    );
  }
}

[Ошибка]. Типы свойств 'options' несовместимы.

Type '{ legend: { position: string; }; }' is not assignable to type 'ChartOptions'.
Types of property 'legend' are incompatible.
Type '{ position: string; }' is not assignable to type 'ChartLegendOptions'.
Types of property 'position' are incompatible.
Type 'string' is not assignable to type 'PositionType'.

1 Ответ

0 голосов
/ 13 сентября 2018

Во-первых, вам не хватает обязательного атрибута данных, т. Е.

<Pie data={data} />

Также, когда вы используете Typescript, вы можете быть явным и устанавливать типы для chart.js:

npm install -D @types/chart.js

Затем вы можете изменить свой код на (см. Следующий рабочий здесь ):

import React from 'react';
import * as ReactDOM from "react-dom"
import { Pie } from 'react-chartjs-2';
import { ChartOptions } from 'chart.js'

export default class Chart extends React.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  render() {
    const data = {
      labels: [
        'Red',
        'Green',
        'Yellow'
      ],
      datasets: [{
        data: [300, 50, 100],
        backgroundColor: [
          '#FF6384',
          '#36A2EB',
          '#FFCE56'
        ],
        hoverBackgroundColor: [
          '#FF6384',
          '#36A2EB',
          '#FFCE56'
        ]
      }]
    };

    let options: ChartOptions = {
      legend: {
        position: 'bottom',
      }
    };

    return (
      <Pie data={data} options={options} />
    );
  }
}

ReactDOM.render(<Chart />, document.getElementById("root"))
...