String: the element is implicitly of type "any" because the index expression is not of the type "number",

We translate our TypeScript 1.8 code, forcing the software developer to set the types.

Here are the error messages:

  • Description: Build: The element is implicitly of type "any" because the index expression is not of the type "number".
  • MyProject project
  • File: C: \ dev \ Scripts \ machines.ts
  • Lines: 77, 78, 80, 81, 96, 110, 111, 220
  • Source: Build

Question

How to determine the types of these variables?

  • _matrixQuantityProduct
  • _matrixQuantityLotSizeProduct
  • matrixQuantityProduct2
  • matrixQuantityLotSizeProduct2

Source

    private _machines: Machine[];
    private _matrixQuantityProduct: Array<Array<number>>;
    private _matrixQuantityLotSizeProduct: Array<Array<number>>;
    private buildMatrixQuantity() {
        let matrixQuantityProduct : Array<Array<number>> = new Array();
        let matrixQuantityLotSizeProduct: Array<Array<number>> = new Array();

        // on cree le array 2D et les clés dynamiques
        for (let i = 0; i < this._machines.length; i++) {
            let matrixQuantityProduct2 : Array<any> = [];
            let matrixQuantityLotSizeProduct2: Array<any>  = [];
            for (let j = 0; j < this._machines.length; j++) {
                    matrixQuantityProduct2[this._machines[j].code] = 0; [line 77]
                matrixQuantityLotSizeProduct2[this._machines[j].code] = 0; [line 78]
            }
            matrixQuantityProduct[this._machines[i].code] = matrixQuantityProduct2; [line 80]
            matrixQuantityLotSizeProduct[this._machines[i].code] = matrixQuantityLotSizeProduct2; [line 80]
        }

        this.listMatrixLog(matrixQuantityProduct, matrixQuantityLotSizeProduct);

        let _productCodeElements: Element[] = this._productModel.getProducts();
        for (let i = 0; i < _productCodeElements.length; i++) {
            let _quantityProduct: number = this._productModel.getQuantityProduct(_productCodeElements[i].nodeValue);
            let _processCodeElements: Element[] = this._productModel.getProcessProduct(_productCodeElements[i].nodeValue);
            for (let j = 0; j < _processCodeElements.length; j++) {

                let _lotSizeOperation: Element[] = this._productModel.getLotSizeOperation(_productCodeElements[i].nodeValue, _processCodeElements[j].nodeValue);
                let _machinesRefElements: Element[] = this._productModel.getResourceMachineProcess(_processCodeElements[j].nodeValue);
                for (let k = 0; k < _machinesRefElements.length - 1; k++) {

                    matrixQuantityProduct[_machinesRefElements[k].nodeValue][_machinesRefElements[k + 1].nodeValue] += _quantityProduct; [line 96]
                    //matrixQuantityLotSizeProduct[][] += (_quantityProduct /parseInt(_lotSizeOperation[k].nodeValue)) ;

                }
            }
        }
        this.listMatrixLog(matrixQuantityProduct, matrixQuantityLotSizeProduct);

        this._matrixQuantityProduct = matrixQuantityProduct;
    }

    private listMatrixLog(matrixQuantityProduct: Array<Array<number>>, matrixQuantityLotSizeProduct: Array<Array<number>>) {
        for (let i = 0; i < this._machines.length; i++) {
            for (let j = 0; j < this._machines.length; j++) {
                this._log.trace("Machine/listMatrix - Quantity Matrixf : " + matrixQuantityProduct[this._machines[i].code][this._machines[j].code]); [line 110]
                this._log.trace("matrice quantityLotSize indice i = " + this._machines[i].code + " indice j = " + this._machines[j].code + " ,contient: " + matrixQuantityLotSizeProduct[this._machines[i].code][this._machines[j].code]); [line 111]
            }
        }
    }


    let cylinder = BABYLON.Mesh.CreateCylinder("cylinder", distance, this._matrixQuantityProduct[machineA][machineB] / 50, this._matrixQuantityProduct[machineA][machineB] / 50, 36, 1, this._scene, true); [line 220]
+4
source share
2 answers

, . , code , :

let matrixQuantityProduct2: Array<any> = [];
matrixQuantityProduct2[this._machines[j].code] = 0;

, this._machines[j].code "123".

, '123'. 123 matrixQuantityProduct2. , - ?

, matrixQuantityProduct2 . :

interface INameToValueMap
{
    [key: string]: any;
}

let matrixQuantityProduct3: INameToValueMap = {};
matrixQuantityProduct3["123"] = 0;

{} [].

. , "noImplicitAny": false tsconfig.json compilerOptions. .

, .

+15

96 "nodeValue", , , parseInt(), .

matrixQuantityProduct[parseInt(_machinesRefElements[k].nodeValue)][parseInt(_machinesRefElements[k + 1].nodeValue)] += _quantityProduct;

, , , , Array<any> Array<Array<number>>

0

All Articles