(Typescript) Как создать экземпляр объекта, который содержит поле типа массива? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть эта ошибка со следующим кодом:

ошибка TS2693: 'any' относится только к типу, но используется здесь как значение

    let modelYaml = this.readFileModel('models/model.yml');

    // Build input model
    let inputModel = {
        elements: any[] = new Array<any>(),  <--Error occured on this line
        relations: any[]= new Array<any>()   <--Error occured on this line
    }
    inputModel.elements.push(modelYaml); <- Error occured

modelYaml имеет тип объекта (функция readFileModel возвращает любой)

tsconfig. json

 "compilerOptions": {
    "baseUrl": "tsconfig",
    "lib": [
      "es2018",
      "dom"
    ],
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noFallthroughCasesInSwitch": true,
    "noImplicitAny": true,
    "noImplicitThis": true,
    "noUnusedParameters": true,
    "noUnusedLocals": true,
    "rootDir": "src/",
    "skipDefaultLibCheck": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "target": "es6",
    "types": [
      "jasmine",
      "node"
    ]
  }

Мне было трудно найти пример кода в машинописи, описывающей литерал объекта с массивом.

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 марта 2020

Вместо new Array<any>() используйте []. TypeScript выведет литеральный тип на основе определения типа переменной.

...