microsoft / microsoft/TypeScript
Support go-to-definition on tsconfig mapped paths for non-source files
还没有人认领这个 Issue。
- 主要语言
- Go
- 星标
- 111k
- 派生
- 14.4k
- 平均合并
- 1 天 19 小时
- 30 天内合并 PR
- 117
描述
Suggestion
The recent change in TypeScript 4.3 to bring go-to-definition support on non-JavaScript file paths is fantastic! I’d love to see this functionality extended to mapped paths defined in tsconfig.json.
🔍 Search Terms
- go-to-definition (and “go to definition”)
- paths
- tsconfig
✅ Viability Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
⭐ Suggestion
📃 Motivating Example
As of TypeScript 4.3,
import foo from "../styles/foo.css";
works well when using go-to-definition. This suggestion would make
import bar from "+styles/foo.css";
work just as well, opening up the underlying mapped file.
💻 Use Cases
This would be useful anywhere someone is using mapped paths in their tsconfig.json to shorten relative imports to commonly used directories (like a “styles” directory).
—
Here’s an example of how I imagine this working:
ts-gotodefs-example
├── package.json
├── src
│ ├── css.d.ts
│ └── index.ts
├── styles
│ └── foo.css
├── tsconfig.json
src/index.ts
// go-to-definition works, foo.css opens as of TS 4.3
import foo from "../styles/foo.css";
// this should also open foo.css but as of TS 4.3 it does not
import bar from "+styles/foo.css";
src/css.d.ts
declare module "*.css" {
const classes: { [key: string]: string };
export default classes;
}
tsconfig.json
{
"compilerOptions": {
"rootDir": "src",
"outDir": "lib",
"paths": {
"+styles/*": ["./styles/*"]
}
}
}
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 src/index.ts 中的示例及其 tsconfig.json 的 paths 映射开始,使用 css.d.ts 声明和 styles/foo.css 目标来复现当前行为。当 go-to-definition 能像解析 ../styles/foo.css 一样,将 +styles/foo.css 解析到映射的文件时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- typescript
- 领域
- devtools
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 描述清楚
- 新手友好度
- 35/100