Recharts 自定义工具提示的 Typescript 接口

Ath*_*dom 15 javascript interface tooltip typescript recharts

由于还不熟悉 Typescript,我正在尝试使用Typescript 在我的 React 应用程序中为我的 Recharts 图表创建自定义工具提示内容。@types/recharts已作为 a 之一安装devDependencies

但是,当我定义CustomTooltip如下所示的函数时,Typescript 抛出错误

绑定元素“active”隐式具有“any”类型。TS7031

我们该如何解决这个问题呢?

const CustomTooltip = ({ active, payload, label }) => {
    if (active) {
        return (
        <div className="custom-tooltip">
            <p className="label">{`${label} : ${payload[0].value}`}</p>
            <p className="desc">Anything you want can be displayed here.</p>
        </div>
        );
    }

    return null;
}

return (
    <ComposedChart data={data}>
        ...
        <Tooltip content={<CustomTooltip />} />
    </ComposedChart>
)
Run Code Online (Sandbox Code Playgroud)

尝试定义接口,但出现另一个错误

类型“{}”缺少类型“ICustomToolip”中的以下属性:活动、有效负载、标签 TS2739

interface ICustomToolip {
    active: any;
    payload: any;
    label: any;
}

const CustomTooltip = ({ active, payload, label }: ICustomToolip) => {
    if (active) {
        return (
        <div className="custom-tooltip">
            <p className="label">{`${label} : ${payload[0].value}`}</p>
            <p className="desc">Anything you want can be displayed here.</p>
        </div>
        );
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

小智 42

尝试执行以下操作(使用 rechart 的类型)。

import { TooltipProps } from 'recharts';
// for recharts v2.1 and above
import {
    ValueType,
    NameType,
} from 'recharts/types/component/DefaultTooltipContent';
// for recharts versions below v2.1
import {
    ValueType,
    NameType,
} from 'recharts/src/component/DefaultTooltipContent';

const CustomTooltip = ({
    active,
    payload,
    label,
}: TooltipProps<ValueType, NameType>) => {
    if (active) {
    return (
        <div className="custom-tooltip">
        <p className="label">{`${label} : ${payload?.[0].value}`}</p>
        <p className="desc">Anything you want can be displayed here.</p>
        </div>
    );
    }

    return null;
};

return (
    <ComposedChart data={data}>
    ...
    <Tooltip content={<CustomTooltip />} />
    </ComposedChart>
);
Run Code Online (Sandbox Code Playgroud)


Tob*_*ias 9

使用:

const CustomTooltip = ({ active, payload, label }: TooltipProps<number, string>): JSX.Element => {
Run Code Online (Sandbox Code Playgroud)

将数字和字符串更改为您的数据类型。您还可以将其与 ValueType 和 NameType 一起使用,但与您的类型一起声明它更有意义。

const CustomTooltip = ({ active, payload, label }: TooltipProps<ValueType, NameType>): JSX.Element => {
Run Code Online (Sandbox Code Playgroud)