Typescript 如何为单个模块使用tsconfig中的路径?

Typescript 如何为单个模块使用tsconfig中的路径?,typescript,tsconfig,Typescript,Tsconfig,这个问题是一个后续问题,除了我想做一个单一的模块 我有一个模块: 它在src/functions/foo.ts中实现 其内容包括: export default interface Bar { } 它由其他模块使用非相对路径导入: import * as Foo from "foo" 编译器找不到它: error TS2307: Cannot find module 'foo' 此tsconfig无法解决该问题 { “编译器选项”:{ “noEmit”:没错, “严格”:是的,

这个问题是一个后续问题,除了我想做一个单一的模块

我有一个模块:

  • 它在
    src/functions/foo.ts中实现
  • 其内容包括:

    export default interface Bar {
    }
    
  • 它由其他模块使用非相对路径导入:

    import * as Foo from "foo"
    
编译器找不到它:

error TS2307: Cannot find module 'foo'

此tsconfig无法解决该问题


{
“编译器选项”:{
“noEmit”:没错,
“严格”:是的,
“模块”:“commonjs”,
“目标”:“es2017”,
“noImplicitAny”:没错,
“moduleResolution”:“节点”,
“源地图”:正确,
“outDir”:“build”,
“baseUrl”:“,
“路径”:{
“foo”:[“src/functions/*”],
"*": [
“节点\u模块/*”
]
}
},
“包括”:[
“/src/****”、“/typings/****”、“/test/****”、“/test integration/****”
]
}

。。。但这确实:


“路径”:{
"*": [
“node_modules/*”,
“src/functions/*”
]
}


为什么
路径的第一个版本不起作用---我做错了什么,我能做些什么来确保
“src/functions/*”
仅在导入
foo
时使用(而不是导入
*
时使用)


(我在使用Node.js的Windows上使用tsc 3.1.6版)。

您正在为目录
src/functions/*
的内容分配一个单词
foo

但是像这样的
foo
只能用于指定单个文件(模块)的确切位置,没有通配符,因此,如下所示:

"paths": {
    "foo": ["src/functions/foo"],
    "*": [
        "node_modules/*"
    ]
}

你可能正在寻找的是

"paths": {
    "foo/*": ["src/functions/*"],
    "*": [
        "node_modules/*"
    ]
}

foo/*
而不是
foo

您正在为目录
src/functions/*
的内容分配一个单词
foo

但是像这样的
foo
只能用于指定单个文件(模块)的确切位置,没有通配符,因此,如下所示:

"paths": {
    "foo": ["src/functions/foo"],
    "*": [
        "node_modules/*"
    ]
}

你可能正在寻找的是

"paths": {
    "foo/*": ["src/functions/*"],
    "*": [
        "node_modules/*"
    ]
}

foo/*
而不是
foo

谢谢,这是我要找的第一个。如果我想通过使用“@foo/bar”
中的
import*as-bar从
src/functions/bar.ts
导入一些东西,我想第二种方法会用到。谢谢,这是我要找的第一种方法。如果我想从“@foo/bar”