Не удается найти пространство имен «MyApp» после Angular и обновления Typescript - PullRequest
0 голосов
/ 18 марта 2020

У меня есть файл определения типа, в котором все объекты dto для моего приложения доступны глобальной области.

DtosGenerator.d.ts

declare module MyApp.Rest.Dto {
   interface IAJsonDto {
   }
 }
 declare module MyApp.Rest.Dto.Post {
   interface ITest1PostDto extends MyApp.Rest.Dto.IAJsonDto {
    code: string;
 }
interface ITest2PostDto extends MyApp.Rest.Dto.IAJsonDto {
    id: number;
 }
interface ITest3PostDto extends MyApp.Rest.Dto.IAJsonDto {
    id: number;
}
  ....
}

И используются следующим образом.

file1.service.ts

import ITest3PostDto = MyApp.Rest.Dto.Post.ITest3PostDto;

Мое приложение построено на основе Angular, и я только что завершил переход с Angular (8), Typescript (3.5.3) на Angular9, Typescript (3.6.4) соответственно. До миграции потребление объектов Dto не вызывало ошибок, и все казалось нормальным. После миграции, когда приложение построено в режиме наблюдения с помощью команды

ng build --extractCss=true --watch, консоль выводит «Не удается найти пространство имен« MyApp ». Когда я добавляю

/// <reference path="../../../../DtosGenerator.d.ts" /> 

поверх файла, ошибка больше не выдается. Есть ли способ сохранить мой код таким, каким он был до миграции, без добавления пути ссылки.

Кто-нибудь может мне сказать, что идет не так?

1 Ответ

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

Для тех, кто сталкивается с той же проблемой, я нашел решение. После нескольких часов исследований я обнаружил, что обновление Angular automati c (https://update.angular.io/) изменило конфигурацию файла tsconfig.app. json.

tsconfig.app. json до миграции

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
  "outDir": "../out-tsc/app",
  "types": [ "node" ],
  "typeRoots": [
     "node_modules/@types"
  ]
},
"exclude": [
  "test.ts",
  "**/*.spec.ts"
]
}

tsconfig.app. json после миграции:

{
 "extends": "../tsconfig.json",
 "compilerOptions": {
   "outDir": "../out-tsc/app",
   "types": [ "node" ],
   "typeRoots": [
     "node_modules/@types"         
   ]
},
"files": [
   "main.ts",
   "polyfills.ts"
 ],
"include": [
  "src/**/*.d.ts"
]
}

Проблема в том, что до миграции все файлы были включены в процесс компиляции, а после него только Включены 2 файла, указанные в массиве «files», и все файлы определения типов в каталоге sr c. Файл 'DtosGenerator.d.ts' находится в папке root в папке sr c, поэтому для создания окончательного правильного файла tsconfig.app. json необходимо выполнить некоторые операции.

tsconfig. приложение. json окончательный

{
   "extends": "../tsconfig.json",
   "compilerOptions": {
   "outDir": "../out-tsc/app",    
   "typeRoots": [
      "node_modules/@types"      
   ]
},
  "files": [
    "main.ts",
    "polyfills.ts"
  ],
  "include": [
     "*.d.ts"
  ]
}
...