Highcharts TypeScript, y-akseetikett
Vennligst se diskusjonen Highcharts tekstetiketter for y-aksen for måten å sette opp y-akseetiketten på.
Jeg brukte https://github.com/borisyankov/DefinitelyTyped/blob/master/highcharts/highcharts.d.ts i min TypeScript-definisjon, men jeg kunne ikke finne en måte å definere y-akse formatter på.
Har noen prøvd før?
-- Oppdatering --
Min opprinnelige JavaScript-kode er
var yearChartOptions = {
yAxis: {
plotLines: [{
label: {
formatter: function () {
return '$' + Highcharts.numberFormat(this.value/1000, 0) +'k ';
}
},
}]
},
};
// Create the chart
var yearChart = new Highcharts.Chart(yearChartOptions);
I koden har jeg this.value som er verdien til hver stolpe (jeg brukte stolpediagram). I TypeScript (jeg har ikke endret for å fjerne array ennå).
var yearChartOptions: HighchartsOptions = {};
yearChartOptions.chart = {};
yearChartOptions.yAxis = [];
yearChartOptions.yAxis[0] = {};
yearChartOptions.yAxis[0].plotLines = {};
yearChartOptions.yAxis[0].plotLines.label = {};
yearChartOptions.yAxis[0].plotLines.label.style.formatter(() => "$" + Highcharts.numberFormat(this.value / 1000, 0) + "k ");
// Create the chart
var yearChart = new Highcharts.Chart(yearChartOptions);
Utdataen er
/*
Compile Error.
See error list for details
D:/MyProject/Scripts/test.ts(36,56): The property 'formatter' does not exist on value of type 'HighchartsCSSObject'
D:/MyProject/Scripts/test.ts(36,107): The property 'value' does not exist on value of type 'Dashboard'
*/
Og det vil ikke kompilere.
Svar #1
Oppdatering - Definitely Typed Highcharts-definisjonen har nå min rettelse, så du kan laste ned den nyeste versjonen og forhåpentligvis vil det løse problemet ditt.
Typedefinisjonen for Highcharts antyder at du trenger å sende et array av alternativer til yAxis. Dette kompilerer i TypeScript.
var chart = new Highcharts.Chart({
yAxis: [{
labels: {
formatter: function (): string {
return 'My Label';
}
}
}]
});
Imidlertid er jeg ikke sikker på at dette samsvarer med dokumentasjonen, som antyder at du sender yAxis-alternativene som et objekt, ikke som en matrise av mange av disse objektene. Dette gir også mening ut fra synspunktet at du har en enkelt yAxis.
For å oppnå det jeg tror er den gyldige versjonen (dvs. ikke arrays):
/// <reference path="highchart.d.ts" />
var yearChartOptions: HighchartsOptions = {
yAxis: {
plotLines: {
label: {
formatter: function (): string {
return '$' + Highcharts.numberFormat(this.value / 1000, 0) + 'k ';
}
},
}
}
};
// Create the chart
var yearChart = new Highcharts.Chart(yearChartOptions);
Du kan justere highchart.d.ts-filen din her...
interface HighchartsOptions {
chart?: HighchartsChartOptions;
// others...
yAxis?: HighchartsAxisOptions; // <-- remove the [] from this line
}
Jeg har sendt inn en pull request til Definitely Typed for å fikse dette.
Fullt fungerende eksempel basert på koden din:
