You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/02/26 14:35:28 UTC

[incubator-echarts] branch typescript updated: ts: add types for singleAxis

This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch typescript
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git


The following commit(s) were added to refs/heads/typescript by this push:
     new edd13a2  ts: add types for singleAxis
edd13a2 is described below

commit edd13a2671a0e92389caae34dad19e3bcfc73ebf
Author: pissang <bm...@gmail.com>
AuthorDate: Wed Feb 26 22:35:11 2020 +0800

    ts: add types for singleAxis
---
 src/component/toolbox/feature/DataView.ts |   7 +-
 src/coord/cartesian/Axis2D.ts             |  26 ++---
 src/coord/polar/Polar.ts                  |   8 +-
 src/coord/single/AxisModel.ts             | 140 +++++++++++++------------
 src/coord/single/Single.ts                | 167 ++++++++++++------------------
 src/coord/single/SingleAxis.ts            | 115 +++++++-------------
 src/coord/single/prepareCustom.ts         |   9 +-
 src/coord/single/singleAxisHelper.ts      |  47 +++++----
 src/coord/single/singleCreator.ts         |  24 +++--
 9 files changed, 236 insertions(+), 307 deletions(-)

diff --git a/src/component/toolbox/feature/DataView.ts b/src/component/toolbox/feature/DataView.ts
index 2e4f4bc..a0041d2 100644
--- a/src/component/toolbox/feature/DataView.ts
+++ b/src/component/toolbox/feature/DataView.ts
@@ -27,6 +27,7 @@ import { ColorString, ECUnitOption, SeriesOption, Payload, Dictionary } from '..
 import ExtensionAPI from '../../../ExtensionAPI';
 import { addEventListener } from 'zrender/src/core/event';
 import Axis from '../../../coord/Axis';
+import Cartesian2D from '../../../coord/cartesian/Cartesian2D';
 
 var dataViewLang = lang.toolbox.dataView;
 
@@ -70,10 +71,9 @@ function groupSeries(ecModel: GlobalModel) {
         var coordSys = seriesModel.coordinateSystem;
 
         if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {
-            var baseAxis = coordSys.getBaseAxis();
-            // @ts-ignore TODO Polar
+            // TODO: TYPE Consider polar? Include polar may increase unecessary bundle size.
+            var baseAxis = (coordSys as Cartesian2D).getBaseAxis();
             if (baseAxis.type === 'category') {
-                // @ts-ignore TODO Polar
                 var key = baseAxis.dim + '_' + baseAxis.index;
                 if (!seriesGroupByCategoryAxis[key]) {
                     seriesGroupByCategoryAxis[key] = {
@@ -83,7 +83,6 @@ function groupSeries(ecModel: GlobalModel) {
                     };
                     meta.push({
                         axisDim: baseAxis.dim,
-                        // @ts-ignore TODO Polar
                         axisIndex: baseAxis.index
                     });
                 }
diff --git a/src/coord/cartesian/Axis2D.ts b/src/coord/cartesian/Axis2D.ts
index 8abf3bb..9214d74 100644
--- a/src/coord/cartesian/Axis2D.ts
+++ b/src/coord/cartesian/Axis2D.ts
@@ -25,6 +25,19 @@ import Grid from './Grid';
 import { OptionAxisType } from '../axisCommonTypes';
 
 
+interface Axis2D {
+    /**
+     * Transform global coord to local coord,
+     * i.e. var localCoord = axis.toLocalCoord(80);
+     */
+    toLocalCoord(coord: number): number;
+
+    /**
+     * Transform global coord to local coord,
+     * i.e. var globalCoord = axis.toLocalCoord(40);
+     */
+    toGlobalCoord(coord: number): number;
+}
 class Axis2D extends Axis {
 
     /**
@@ -106,19 +119,6 @@ class Axis2D extends Axis {
         return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);
     }
 
-    /**
-     * Transform global coord to local coord,
-     * i.e. var localCoord = axis.toLocalCoord(80);
-     * designate by module:echarts/coord/cartesian/Grid.
-     */
-    toLocalCoord: (coord: number) => number;
-
-    /**
-     * Transform global coord to local coord,
-     * i.e. var globalCoord = axis.toLocalCoord(40);
-     * designate by module:echarts/coord/cartesian/Grid.
-     */
-    toGlobalCoord: (coord: number) => number;
 
 }
 
diff --git a/src/coord/polar/Polar.ts b/src/coord/polar/Polar.ts
index cf1fa87..4b7e3af 100644
--- a/src/coord/polar/Polar.ts
+++ b/src/coord/polar/Polar.ts
@@ -17,10 +17,6 @@
 * under the License.
 */
 
-/**
- * @module echarts/coord/polar/Polar
- */
-
 import RadiusAxis from './RadiusAxis';
 import AngleAxis from './AngleAxis';
 import PolarModel from './PolarModel';
@@ -241,13 +237,13 @@ class Polar implements CoordinateSystem, CoordinateSystemMaster {
 
     convertToPixel(ecModel: GlobalModel, finder: ParsedModelFinder, value: ScaleDataValue[]) {
         const seriesModel = finder.seriesModel;
-        const coordSys = seriesModel ? seriesModel.coordinateSystem : null;
+        const coordSys = seriesModel && seriesModel.coordinateSystem;
         return coordSys === this ? this.dataToPoint(value) : null;
     }
 
     convertFromPixel(ecModel: GlobalModel, finder: ParsedModelFinder, pixel: number[]) {
         const seriesModel = finder.seriesModel;
-        const coordSys = seriesModel ? seriesModel.coordinateSystem : null;
+        const coordSys = seriesModel && seriesModel.coordinateSystem;
         return coordSys === this ? this.pointToData(pixel) : null;
     }
 }
diff --git a/src/coord/single/AxisModel.ts b/src/coord/single/AxisModel.ts
index 75b235c..7f302d0 100644
--- a/src/coord/single/AxisModel.ts
+++ b/src/coord/single/AxisModel.ts
@@ -17,90 +17,92 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 import * as zrUtil from 'zrender/src/core/util';
 import ComponentModel from '../../model/Component';
 import axisModelCreator from '../axisModelCreator';
 import {AxisModelCommonMixin} from '../axisModelCommonMixin';
+import Single from './Single';
+import SingleAxis from './SingleAxis';
+import { AxisBaseOption } from '../axisCommonTypes';
+import { BoxLayoutOptionMixin, LayoutOrient } from '../../util/types';
+
+export type SingleAxisPosition = 'top' | 'bottom' | 'left' | 'right'
 
-var AxisModel = ComponentModel.extend({
+export interface SingleAxisOption extends AxisBaseOption, BoxLayoutOptionMixin {
+    position?: SingleAxisPosition
+    orient: LayoutOrient
+}
 
-    type: 'singleAxis',
+class SingleAxisModel extends ComponentModel<SingleAxisOption> {
+    static type = 'singleAxis'
+    type = SingleAxisModel.type
 
-    layoutMode: 'box',
+    static readonly layoutMode = 'box'
 
-    /**
-     * @type {module:echarts/coord/single/SingleAxis}
-     */
-    axis: null,
+    axis: SingleAxis
 
-    /**
-     * @type {module:echarts/coord/single/Single}
-     */
-    coordinateSystem: null,
+    coordinateSystem: Single
 
-    /**
-     * @override
-     */
-    getCoordSysModel: function () {
+    getCoordSysModel() {
         return this;
     }
 
-});
-
-var defaultOption = {
-
-    left: '5%',
-    top: '5%',
-    right: '5%',
-    bottom: '5%',
-
-    type: 'value',
-
-    position: 'bottom',
-
-    orient: 'horizontal',
-
-    axisLine: {
-        show: true,
-        lineStyle: {
-            width: 1,
-            type: 'solid'
-        }
-    },
-
-    // Single coordinate system and single axis is the,
-    // which is used as the parent tooltip model.
-    // same model, so we set default tooltip show as true.
-    tooltip: {
-        show: true
-    },
-
-    axisTick: {
-        show: true,
-        length: 6,
-        lineStyle: {
-            width: 1
-        }
-    },
-
-    axisLabel: {
-        show: true,
-        interval: 'auto'
-    },
-
-    splitLine: {
-        show: true,
-        lineStyle: {
-            type: 'dashed',
-            opacity: 0.2
+    static defaultOption: SingleAxisOption = {
+
+        left: '5%',
+        top: '5%',
+        right: '5%',
+        bottom: '5%',
+
+        type: 'value',
+
+        position: 'bottom',
+
+        orient: 'horizontal',
+
+        axisLine: {
+            show: true,
+            lineStyle: {
+                width: 1,
+                type: 'solid'
+            }
+        },
+
+        // Single coordinate system and single axis is the,
+        // which is used as the parent tooltip model.
+        // same model, so we set default tooltip show as true.
+        tooltip: {
+            show: true
+        },
+
+        axisTick: {
+            show: true,
+            length: 6,
+            lineStyle: {
+                width: 1
+            }
+        },
+
+        axisLabel: {
+            show: true,
+            interval: 'auto'
+        },
+
+        splitLine: {
+            show: true,
+            lineStyle: {
+                type: 'dashed',
+                opacity: 0.2
+            }
         }
     }
-};
+}
+
+ComponentModel.registerClass(SingleAxisModel);
 
-zrUtil.mixin(AxisModel, {AxisModelCommonMixin});
+interface SingleAxisModel extends AxisModelCommonMixin<SingleAxisOption> {}
+zrUtil.mixin(SingleAxisModel, {AxisModelCommonMixin});
 
-axisModelCreator('single', AxisModel, defaultOption);
+axisModelCreator('single', SingleAxisModel, SingleAxisModel.defaultOption);
 
-export default AxisModel;
\ No newline at end of file
+export default SingleAxisModel;
\ No newline at end of file
diff --git a/src/coord/single/Single.ts b/src/coord/single/Single.ts
index 4df9773..35457be 100644
--- a/src/coord/single/Single.ts
+++ b/src/coord/single/Single.ts
@@ -17,8 +17,6 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 /**
  * Single coordinates system.
  */
@@ -27,67 +25,48 @@ import SingleAxis from './SingleAxis';
 import * as axisHelper from '../axisHelper';
 import {getLayoutRect} from '../../util/layout';
 import {each} from 'zrender/src/core/util';
+import { CoordinateSystem, CoordinateSystemMaster } from '../CoordinateSystem';
+import GlobalModel from '../../model/Global';
+import ExtensionAPI from '../../ExtensionAPI';
+import BoundingRect from 'zrender/src/core/BoundingRect';
+import SingleAxisModel from './AxisModel';
+import { ParsedModelFinder } from '../../util/model';
+import { ScaleDataValue } from '../../util/types';
 
 /**
  * Create a single coordinates system.
- *
- * @param {module:echarts/coord/single/AxisModel} axisModel
- * @param {module:echarts/model/Global} ecModel
- * @param {module:echarts/ExtensionAPI} api
  */
-function Single(axisModel, ecModel, api) {
+class Single implements CoordinateSystem, CoordinateSystemMaster {
 
-    /**
-     * @type {string}
-     * @readOnly
-     */
-    this.dimension = 'single';
+    readonly type = 'single';
 
+    readonly dimension = 'single';
     /**
      * Add it just for draw tooltip.
-     *
-     * @type {Array.<string>}
-     * @readOnly
      */
-    this.dimensions = ['single'];
+    readonly dimensions = ['single'];
 
-    /**
-     * @private
-     * @type {module:echarts/coord/single/SingleAxis}.
-     */
-    this._axis = null;
+    name: string
 
-    /**
-     * @private
-     * @type {module:zrender/core/BoundingRect}
-     */
-    this._rect;
+    axisPointerEnabled: boolean = true
 
-    this._init(axisModel, ecModel, api);
+    model: SingleAxisModel
 
-    /**
-     * @type {module:echarts/coord/single/AxisModel}
-     */
-    this.model = axisModel;
-}
+    private _axis: SingleAxis
 
-Single.prototype = {
+    private _rect: BoundingRect
 
-    type: 'singleAxis',
+    constructor(axisModel: SingleAxisModel, ecModel: GlobalModel, api: ExtensionAPI) {
 
-    axisPointerEnabled: true,
+        this.model = axisModel;
 
-    constructor: Single,
+        this._init(axisModel, ecModel, api);
+    }
 
     /**
      * Initialize single coordinate system.
-     *
-     * @param  {module:echarts/coord/single/AxisModel} axisModel
-     * @param  {module:echarts/model/Global} ecModel
-     * @param  {module:echarts/ExtensionAPI} api
-     * @private
      */
-    _init: function (axisModel, ecModel, api) {
+    _init(axisModel: SingleAxisModel, ecModel: GlobalModel, api: ExtensionAPI) {
 
         var dim = this.dimension;
 
@@ -108,14 +87,12 @@ Single.prototype = {
         axis.model = axisModel;
         axis.coordinateSystem = this;
         this._axis = axis;
-    },
+    }
 
     /**
      * Update axis scale after data processed
-     * @param  {module:echarts/model/Global} ecModel
-     * @param  {module:echarts/ExtensionAPI} api
      */
-    update: function (ecModel, api) {
+    update(ecModel: GlobalModel, api: ExtensionAPI) {
         ecModel.eachSeries(function (seriesModel) {
             if (seriesModel.coordinateSystem === this) {
                 var data = seriesModel.getData();
@@ -125,15 +102,12 @@ Single.prototype = {
                 axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);
             }
         }, this);
-    },
+    }
 
     /**
      * Resize the single coordinate system.
-     *
-     * @param  {module:echarts/coord/single/AxisModel} axisModel
-     * @param  {module:echarts/ExtensionAPI} api
      */
-    resize: function (axisModel, api) {
+    resize(axisModel: SingleAxisModel, api: ExtensionAPI) {
         this._rect = getLayoutRect(
             {
                 left: axisModel.get('left'),
@@ -150,19 +124,13 @@ Single.prototype = {
         );
 
         this._adjustAxis();
-    },
+    }
 
-    /**
-     * @return {module:zrender/core/BoundingRect}
-     */
-    getRect: function () {
+    getRect() {
         return this._rect;
-    },
+    }
 
-    /**
-     * @private
-     */
-    _adjustAxis: function () {
+    private _adjustAxis() {
 
         var rect = this._rect;
         var axis = this._axis;
@@ -175,13 +143,10 @@ Single.prototype = {
 
         this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);
 
-    },
+    }
+
 
-    /**
-     * @param  {module:echarts/coord/single/SingleAxis} axis
-     * @param  {number} coordBase
-     */
-    _updateAxisTransform: function (axis, coordBase) {
+    private _updateAxisTransform(axis: SingleAxis, coordBase: number) {
 
         var axisExtent = axis.getExtent();
         var extentSum = axisExtent[0] + axisExtent[1];
@@ -202,47 +167,38 @@ Single.prototype = {
             : function (coord) {
                 return extentSum - coord + coordBase;
             };
-    },
+    }
 
     /**
      * Get axis.
-     *
-     * @return {module:echarts/coord/single/SingleAxis}
      */
-    getAxis: function () {
+    getAxis() {
         return this._axis;
-    },
+    }
 
     /**
      * Get axis, add it just for draw tooltip.
-     *
-     * @return {[type]} [description]
      */
-    getBaseAxis: function () {
+    getBaseAxis() {
         return this._axis;
-    },
+    }
 
-    /**
-     * @return {Array.<module:echarts/coord/Axis>}
-     */
-    getAxes: function () {
+    getAxes() {
         return [this._axis];
-    },
+    }
 
-    /**
-     * @return {Object} {baseAxes: [], otherAxes: []}
-     */
-    getTooltipAxes: function () {
-        return {baseAxes: [this.getAxis()]};
-    },
+    getTooltipAxes() {
+        return {
+            baseAxes: [this.getAxis()],
+            // Empty otherAxes
+            otherAxes: [] as SingleAxis[]
+        };
+    }
 
     /**
      * If contain point.
-     *
-     * @param  {Array.<number>} point
-     * @return {boolean}
      */
-    containPoint: function (point) {
+    containPoint(point: number[]) {
         var rect = this.getRect();
         var axis = this.getAxis();
         var orient = axis.orient;
@@ -254,26 +210,20 @@ Single.prototype = {
             return axis.contain(axis.toLocalCoord(point[1]))
             && (point[0] >= rect.y && point[0] <= (rect.y + rect.height));
         }
-    },
+    }
 
-    /**
-     * @param {Array.<number>} point
-     * @return {Array.<number>}
-     */
-    pointToData: function (point) {
+    pointToData(point: number[]) {
         var axis = this.getAxis();
         return [axis.coordToData(axis.toLocalCoord(
             point[axis.orient === 'horizontal' ? 0 : 1]
         ))];
-    },
+    }
 
     /**
      * Convert the series data to concrete point.
-     *
-     * @param  {number|Array.<number>} val
-     * @return {Array.<number>}
+     * Can be [val] | val
      */
-    dataToPoint: function (val) {
+    dataToPoint(val: ScaleDataValue | ScaleDataValue[]) {
         var axis = this.getAxis();
         var rect = this.getRect();
         var pt = [];
@@ -288,6 +238,17 @@ Single.prototype = {
         return pt;
     }
 
-};
+    convertToPixel(ecModel: GlobalModel, finder: ParsedModelFinder, value: ScaleDataValue[]) {
+        const seriesModel = finder.seriesModel;
+        const coordSys = seriesModel && seriesModel.coordinateSystem;
+        return coordSys === this ? this.dataToPoint(value) : null;
+    }
+
+    convertFromPixel(ecModel: GlobalModel, finder: ParsedModelFinder, pixel: number[]) {
+        const seriesModel = finder.seriesModel;
+        const coordSys = seriesModel && seriesModel.coordinateSystem;
+        return coordSys === this ? this.pointToData(pixel) : null;
+    }
+}
 
 export default Single;
diff --git a/src/coord/single/SingleAxis.ts b/src/coord/single/SingleAxis.ts
index 9ea24b2..f0a6df8 100644
--- a/src/coord/single/SingleAxis.ts
+++ b/src/coord/single/SingleAxis.ts
@@ -17,98 +17,63 @@
 * under the License.
 */
 
-// @ts-nocheck
-
-import * as zrUtil from 'zrender/src/core/util';
 import Axis from '../Axis';
+import Scale from '../../scale/Scale';
+import { OptionAxisType } from '../axisCommonTypes';
+import SingleAxisModel, { SingleAxisPosition } from './AxisModel';
+import { LayoutOrient } from '../../util/types';
+import Single from './Single';
 
-/**
- * @constructor  module:echarts/coord/single/SingleAxis
- * @extends {module:echarts/coord/Axis}
- * @param {string} dim
- * @param {*} scale
- * @param {Array.<number>} coordExtent
- * @param {string} axisType
- * @param {string} position
- */
-var SingleAxis = function (dim, scale, coordExtent, axisType, position) {
-
-    Axis.call(this, dim, scale, coordExtent);
-
+interface SingleAxis {
     /**
-     * Axis type
-     * - 'category'
-     * - 'value'
-     * - 'time'
-     * - 'log'
-     * @type {string}
+     * Transform global coord to local coord,
+     * i.e. var localCoord = axis.toLocalCoord(80);
      */
-    this.type = axisType || 'value';
+    toLocalCoord(coord: number): number;
 
     /**
-     * Axis position
-     *  - 'top'
-     *  - 'bottom'
-     *  - 'left'
-     *  - 'right'
-     *  @type {string}
+     * Transform global coord to local coord,
+     * i.e. var globalCoord = axis.toLocalCoord(40);
      */
-    this.position = position || 'bottom';
+    toGlobalCoord(coord: number): number;
+}
+class SingleAxis extends Axis {
 
-    /**
-     * Axis orient
-     *  - 'horizontal'
-     *  - 'vertical'
-     * @type {[type]}
-     */
-    this.orient = null;
+    type: OptionAxisType
 
-};
+    position: SingleAxisPosition
 
-SingleAxis.prototype = {
+    orient: LayoutOrient
 
-    constructor: SingleAxis,
+    reverse: boolean
 
-    /**
-     * Axis model
-     * @type {module:echarts/coord/single/AxisModel}
-     */
-    model: null,
-
-    /**
-     * Judge the orient of the axis.
-     * @return {boolean}
-     */
-    isHorizontal: function () {
-        var position = this.position;
-        return position === 'top' || position === 'bottom';
+    coordinateSystem: Single
 
-    },
+    model: SingleAxisModel
 
-    /**
-     * @override
-     */
-    pointToData: function (point, clamp) {
-        return this.coordinateSystem.pointToData(point, clamp)[0];
-    },
+    constructor(
+        dim: string,
+        scale: Scale,
+        coordExtent: [number, number],
+        axisType?: OptionAxisType,
+        position?: SingleAxisPosition
+    ) {
+        super(dim, scale, coordExtent);
 
-    /**
-     * Convert the local coord(processed by dataToCoord())
-     * to global coord(concrete pixel coord).
-     * designated by module:echarts/coord/single/Single.
-     * @type {Function}
-     */
-    toGlobalCoord: null,
+        this.type = axisType || 'value';
+        this.position = position || 'bottom';
+    }
 
     /**
-     * Convert the global coord to local coord.
-     * designated by module:echarts/coord/single/Single.
-     * @type {Function}
+     * Judge the orient of the axis.
      */
-    toLocalCoord: null
-
-};
-
-zrUtil.inherits(SingleAxis, Axis);
+    isHorizontal() {
+        var position = this.position;
+        return position === 'top' || position === 'bottom';
+    }
 
+    pointToData(point: number[], clamp?: boolean) { // TODO: clamp is not used.
+        return this.coordinateSystem.pointToData(point)[0];
+    }
+}
 export default SingleAxis;
\ No newline at end of file
diff --git a/src/coord/single/prepareCustom.ts b/src/coord/single/prepareCustom.ts
index 602d153..6f3ef7a 100644
--- a/src/coord/single/prepareCustom.ts
+++ b/src/coord/single/prepareCustom.ts
@@ -17,11 +17,10 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 import * as zrUtil from 'zrender/src/core/util';
+import Single from './Single';
 
-function dataToCoordSize(dataSize, dataItem) {
+function dataToCoordSize(this: Single, dataSize: number | number[], dataItem: number | number[]) {
     // dataItem is necessary in log axis.
     var axis = this.getAxis();
     var val = dataItem instanceof Array ? dataItem[0] : dataItem;
@@ -31,7 +30,7 @@ function dataToCoordSize(dataSize, dataItem) {
         : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
 }
 
-export default function (coordSys) {
+export default function (coordSys: Single) {
     var rect = coordSys.getRect();
 
     return {
@@ -43,7 +42,7 @@ export default function (coordSys) {
             height: rect.height
         },
         api: {
-            coord: function (val) {
+            coord: function (val: number) {
                 // do not provide "out" param
                 return coordSys.dataToPoint(val);
             },
diff --git a/src/coord/single/singleAxisHelper.ts b/src/coord/single/singleAxisHelper.ts
index af2fba5..a2fb43e 100644
--- a/src/coord/single/singleAxisHelper.ts
+++ b/src/coord/single/singleAxisHelper.ts
@@ -17,22 +17,27 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 import * as zrUtil from 'zrender/src/core/util';
+import SingleAxisModel from './AxisModel';
+
+interface LayoutResult {
+    position: [number, number],
+    rotation: number
+    labelRotation: number
+    labelDirection: 1 | -1
+    tickDirection: 1 | -1
+    nameDirection: 1 | -1
+    z2: number
+}
 
-/**
- * @param {Object} opt {labelInside}
- * @return {Object} {
- *  position, rotation, labelDirection, labelOffset,
- *  tickDirection, labelRotate, z2
- * }
- */
-export function layout(axisModel, opt) {
+export function layout(axisModel: SingleAxisModel, opt?: {
+    labelInside?: boolean
+    rotate?: number
+}) {
     opt = opt || {};
     var single = axisModel.coordinateSystem;
     var axis = axisModel.axis;
-    var layout = {};
+    var layout = {} as LayoutResult;
 
     var axisPosition = axis.position;
     var orient = axis.orient;
@@ -43,35 +48,35 @@ export function layout(axisModel, opt) {
     var positionMap = {
         horizontal: {top: rectBound[2], bottom: rectBound[3]},
         vertical: {left: rectBound[0], right: rectBound[1]}
-    };
+    } as const;
 
     layout.position = [
         orient === 'vertical'
-            ? positionMap.vertical[axisPosition]
+            ? positionMap.vertical[axisPosition as 'left' | 'right']
             : rectBound[0],
         orient === 'horizontal'
-            ? positionMap.horizontal[axisPosition]
+            ? positionMap.horizontal[axisPosition as 'top' | 'bottom']
             : rectBound[3]
-    ];
+    ] as [number, number];
 
     var r = {horizontal: 0, vertical: 1};
     layout.rotation = Math.PI / 2 * r[orient];
 
-    var directionMap = {top: -1, bottom: 1, right: 1, left: -1};
+    const directionMap = {top: -1, bottom: 1, right: 1, left: -1} as const;
 
     layout.labelDirection = layout.tickDirection =
         layout.nameDirection = directionMap[axisPosition];
 
-    if (axisModel.get('axisTick.inside')) {
-        layout.tickDirection = -layout.tickDirection;
+    if (axisModel.get(['axisTick', 'inside'])) {
+        layout.tickDirection = -layout.tickDirection as -1 | 1;
     }
 
-    if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {
-        layout.labelDirection = -layout.labelDirection;
+    if (zrUtil.retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {
+        layout.labelDirection = -layout.labelDirection as -1 | 1;
     }
 
     var labelRotation = opt.rotate;
-    labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));
+    labelRotation == null && (labelRotation = axisModel.get(['axisLabel', 'rotate']));
     layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;
 
     layout.z2 = 1;
diff --git a/src/coord/single/singleCreator.ts b/src/coord/single/singleCreator.ts
index d7f8546..3bd2ad6 100644
--- a/src/coord/single/singleCreator.ts
+++ b/src/coord/single/singleCreator.ts
@@ -17,26 +17,25 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 /**
  * Single coordinate system creator.
  */
 
 import Single from './Single';
 import CoordinateSystem from '../../CoordinateSystem';
+import GlobalModel from '../../model/Global';
+import ExtensionAPI from '../../ExtensionAPI';
+import SingleAxisModel from './AxisModel';
+import SeriesModel from '../../model/Series';
+import { SeriesOption } from '../../util/types';
 
 /**
  * Create single coordinate system and inject it into seriesModel.
- *
- * @param {module:echarts/model/Global} ecModel
- * @param {module:echarts/ExtensionAPI} api
- * @return {Array.<module:echarts/coord/single/Single>}
  */
-function create(ecModel, api) {
-    var singles = [];
+function create(ecModel: GlobalModel, api: ExtensionAPI) {
+    var singles: Single[] = [];
 
-    ecModel.eachComponent('singleAxis', function (axisModel, idx) {
+    ecModel.eachComponent('singleAxis', function (axisModel: SingleAxisModel, idx: number) {
 
         var single = new Single(axisModel, ecModel, api);
         single.name = 'single_' + idx;
@@ -46,13 +45,16 @@ function create(ecModel, api) {
 
     });
 
-    ecModel.eachSeries(function (seriesModel) {
+    ecModel.eachSeries(function (seriesModel: SeriesModel<SeriesOption & {
+        singleAxisIndex?: number
+        singleAxisId?: string
+    }>) {
         if (seriesModel.get('coordinateSystem') === 'singleAxis') {
             var singleAxisModel = ecModel.queryComponents({
                 mainType: 'singleAxis',
                 index: seriesModel.get('singleAxisIndex'),
                 id: seriesModel.get('singleAxisId')
-            })[0];
+            })[0] as SingleAxisModel;
             seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;
         }
     });


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org