TypeScript 在outDir中的文件在使用外部包含的文件时,不使用各自的tsconfig.json进行跳转定义,

kkih6yb8  于 6个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(44)

🔎 搜索词

outdir声明 dts tsconfig.json moduleresolution bundler node16

🕗 版本与回归信息

  • 这是我尝试的每个版本中的行为

⏯ Playground链接

N/A

💻 代码

/// <reference path="../fourslash.ts" />

// @Filename: /tsconfig.json
////{
////    "compilerOptions": {
////        "strict": true,
////        "moduleResolution": "node16",
////        "module": "node16",
////        "rootDir": "./src",
////        "outDir": "./dist",
////        "declaration": true
////    },
////    "include": ["src/*"]
////}

// @Filename: /package.json
////{
////    "name": "a",
////    "exports": {
////        ".": "./dist/index.js",
////        "./thing": "./dist/thing.js"
////    }
////}

// @Filename: /src/index.ts
////export { thing } from /*src*/"a/thing";

// @Filename: /src/thing.ts
////export const thing = "thing";

// @Filename: /dist/index.d.ts
////export { thing } from /*dist*/"a/thing";

// @Filename: /dist/thing.d.ts
////export declare const thing = "thing";

verify.baselineGoToDefinition("src", "dist");

🙁 实际行为

标记 /*src*/ 的定义被正确解析,但标记 /*dist*/ 的定义没有。标记

🙂 预期行为

这里两个标记都应该可以工作。由于这个复现示例没有任何源/声明Map,我可能会期望标记 /*dist*/ 的解析结果与标记 /dist/thing.d.ts 相同。

关于问题的附加信息

我还想知道在 outDir 内的文件(对于不使用 tsc 进行发射的库来说很常见)如果没有直接Map到源文件,会发生什么情况。
cc @andrewbranch
值得注意的是,当找不到定义时,测试运行器会崩溃:

1) fourslash-server tests
       tests/cases/fourslash/server/definitionSpan.ts
         fourslash-server test definitionSpan.ts runs correctly:
     TypeError: Cannot read properties of undefined (reading 'start')
      at SessionClient.decodeSpan (src/harness/client.ts:656:18)
      at SessionClient.getDefinitionAndBoundSpan (src/harness/client.ts:406:28)
vxf3dgd4

vxf3dgd41#

这是一个go to definition问题还是一个模块解析问题?如果是模块解析问题,它将在正常的编译器测试中出现。

jfewjypa

jfewjypa2#

这是一个定义问题,如果这不够清楚的话,我很抱歉。我在这里只给你发送了一份副本,因为它涉及到模块解析模式。

相关问题