Почему компилятор машинописного текста жалуется, что свойство «данные» не существует для типа «Только для чтения» (реквизит)?

Я изучаю машинопись, и я немного застрял в следующей ошибке:

Property 'data' does not exist on type 'Readonly<{}> & Readonly<{ children?: ReactNode; }>'.  TS2339

let data = this.props.data as any;
                      ^

BigOGraphProps.data определено, почему компилятор жалуется, что его не существует?? Должно быть, я упускаю здесь что-то важное. Обратите внимание, что я привожу к any, потому что на самом деле не хочу беспокоиться о базовом типе AreaChart (по крайней мере, пока, сначала я хочу, чтобы эта часть работала).

import React from 'react';
import { AreaChart } from 'recharts';

type BigOGraphProps = {
  data: {
    n: number[],
    oLogNData: number[],
    oNData: number[],
    oNLogNData: number[],
    oNSq2Data: number[],
    o2SqNData: number[],
    oNInvData: number[],
  };
};

export default class BigOGraph extends React.Component {
  constructor(props: BigOGraphProps) {
    super(props);
  }

  render() {
    let leftMargin = 5;
    let data = this.props.data as any;

    return (
      <div>
        <AreaChart data={data} >
        </AreaChart>
      </div>
     );
  }
}

person Gio    schedule 05.02.2020    source источник
comment
Отвечает ли это на ваш вопрос? Свойство "значение" не существует для типа "Только для чтения‹{}›"   -  person tpliakas    schedule 06.02.2020


Ответы (2)


как упоминалось в @Wex, передача BigOGraphProps универсальному параметру в классе Component и удаление конструктора должны помочь

import React from 'react';

type BigOGraphProps = {
  data: {
    n: number[];
    oLogNData: number[];
    oNData: number[];
    oNLogNData: number[];
    oNSq2Data: number[];
    o2SqNData: number[];
    oNInvData: number[];
  };
};

export default class BigOGraph extends React.Component<BigOGraphProps> {
  render() {
    let leftMargin = 5;
    let data = this.props.data as any;
    return (
      <div>
        <AreaChart data={data} >
        </AreaChart>
      </div>
     );
  }
}
person Anuj    schedule 05.02.2020

React.Component — это универсальный класс, который принимает тип реквизита в качестве первого аргумента. По умолчанию это any. Измените его на:

React.Component<BigOGraphProps>
person Wex    schedule 05.02.2020