我已经使用ANGLE CLI创建了一个新的工作区,并向其中添加了两个项目,一个库和一个应用程序.运行应用程序"my-app""ng serve"运行得很好.

在将.ts个文件复制到新的"my-app"项目后,我收到编译器错误,并且无法识别相对路径:

import { environment } from 'environments/environment';

仅当我将其更改为:

import { environment } from 'projects/my-app/src/environments/environment';

我的项目 struct :

+ node_modules
+ projects
| + my-app
| | + src
| | | + app
| | | | - app.module.ts (etc.)
| | | + environments
| | | | - environment.ts
| | - tsconfig.app.json
- tsconfig.json
- package.json

到目前为止,我已经try 用许多值覆盖tsconfig.app.json个值中的"baseUrl"个,但它们都不起作用:

"projects/my-app/src"
"src",
"./src"

(使用VS Code I多次重启TS服务器:Ctrl + P > "Typescript: restart TS Server英寸但没有效果;TS编译器似乎根本读不到tsconfig.app.json)

在工作区的tsconfig.json文件中设置"baseUrl"起作用:

帖子主题:Re:Колибри

...
"baseUrl": "./projects/my-app/src",
...

但由于稍后我要将其他项目添加到工作区,所以我不喜欢以这种方式解决它.

我知道如何为tsconfig.json>"paths"添加快捷方式,但我必须更改成百上千条.ts文件import语句:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@app/*": ["........"],
      "@pages/*": ["...../pages/*"],
      "@components/*": ["...../components/*"],
      "@state/*": ["...../state/*"]
    }
  }
}

我如何告诉我的ANGLE项目的TS编译器我已经在tsconfig.app.json中覆盖了baseUrl

推荐答案

也许你在找这个(https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mappinghttps://www.typescriptlang.org/tsconfig#paths):

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths" : {
            "*" : ["*", "projects/app1/src/*", "projects/app2/src/*"]
        }
    }
}

请注意,路径是相对于basUrl解析的.当将BasUrl设置为"."以外的值时,即tsfig.json的目录,映射必须相应更改.

这会告诉编译器,匹配模式"*"(即所有值)的任何模块导入都要在两个位置进行查找:

  1. *:意思是相同的名字,所以map

<moduleName> => <baseUrl>/<moduleName>

  1. projects/app1/src/*表示带有附加前缀的模块名称,因此映射<moduleName> => <baseUrl>/projects/app1/src/<moduleName>

在你的道路上保持src只取决于你的需要,只要你想改变它们就行了.

Typescript相关问答推荐

使用前的组件渲染状态更新

有条件地删除区分的联合类型中的属性的可选属性

打字类型保护递归判断

Angular 自定义验证控件未获得表单值

有没有一种方法可以确保类型的成员实际存在于TypeScript中的对象中?

为什么我在这个重载函数中需要`as any`?

在React中定义props 的不同方式.FunctionalComponent

确保对象列表在编译时在类型脚本中具有唯一键

类型推断对React.ForwardRef()的引用参数无效

TypeScrip-根据一个参数值验证另一个参数值

TaskListProps[]类型不可分配给TaskListProps类型

从以下内容之一提取属性类型

对于VUE3,错误XX不存在于从不存在的类型上意味着什么?

如何使用IsEqual创建断言类型相等的实用程序

参数未映射泛型返回类型

如何为对象数组中的每个条目推断不同的泛型

Svelte+EsBuild+Deno-未捕获类型错误:无法读取未定义的属性(读取';$$';)

React中的效果挂钩在依赖项更新后不会重新执行

断言同级为true或抛出错误的Typescript函数

带动态键的 TS 功能