From dc72f7ed97fed874bd3ac264ea0c385043efa313 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Mon, 3 Feb 2020 12:03:32 -0500 Subject: [PATCH] chart.js: Update ChartData to accept both Arrays and ReadonlyArrays (#42023) By changing the types for `ChartData["labels"]` and `ChartData["datasets"]` to ReadonlyArrays we can pass either ReadonlyArrays or Arrays as ChartData. This is useful when chart.js is used inside a React component where the props are readonly. --- types/chart.js/chart.js-tests.ts | 9 +++++++++ types/chart.js/index.d.ts | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 3f391ddd5a..8d82393822 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -411,6 +411,15 @@ if (doughnutChart.getDatasetMeta(0).data.length > 0) { console.log(doughnutChartView.y); } +// Passing readonly data as ChartData +const readonlyDataInput: { + labels: ReadonlyArray; + datasets: ReadonlyArray<{ + data: number[]; + }>; +} = { labels: [], datasets: [] }; +const readonlyData: Chart.ChartData = readonlyDataInput; + // Time Cartesian Axis const timeAxisChartData: Chart.ChartData = { datasets: [{ diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index d40d1d8c23..17698d362a 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -243,8 +243,8 @@ declare namespace Chart { } interface ChartData { - labels?: Array; - datasets?: ChartDataSets[]; + labels?: ReadonlyArray | number | ReadonlyArray | Date | ReadonlyArray | Moment | ReadonlyArray>; + datasets?: ReadonlyArray; } interface RadialChartOptions extends ChartOptions {