获取Angular 2 .ts文件而不是.d.ts文件

Mar*_*ger 5 javascript webstorm angular

当我使用angular2代码时,我经常需要看一个类的实现,让我们说Router类.

如果我Router在IDE WebStorm中单击类型,例如在另一个类的构造函数内

export class myClass {
    constructor(private router: Router) {}
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我的IDE将我带到router.d.tsnode_modules文件夹中的TypeScript定义文件.我想要的是带我到原始router.ts文件与路由器类的实现,而不仅仅是它的定义.

当您通过Angular2快速入门中建议的标准package.json从github获取angular2时,原始.ts文件不包含在node_modules文件夹结构中.目前,我必须在官方github repo中查找原始代码.

任何想法如何将.ts文件放入我的node_modules/@angular文件夹而不是.d.ts文件?

Shl*_*saf 5

遗憾的是,这是不可能的,因为不存在 TS 文件。即使您添加它们仍然不可能,因为您导入了始终指向定义文件的真实角度路径。最重要的是,项目的文件结构与导入字符串文字的结构无关。

一些背景和更多信息

NPM 包不包含.ts文件,这是 angular 团队设计的。直到不久前,这些.ts文件确实与 NPM 包一起提供。

删除它们的原因是禁止用户滥用私有类和@internal私有 API,私有 API 是 API 中的公共方法/属性,这些方法/属性不应该是公共的,但必须是其他 Angular 内部类可以使用它们。

我们曾经看到很多代码示例在做类似的事情import { PromiseCompleter } from 'angular2/src/facade/lang';(在 RC0 之前),但是当项目结构在 RC0 中进行了大的结构重构时,这种情况发生了变化。这种滥用范围很广,而且很糟糕,非常糟糕......对于用户和 Angular PR。

Angular 项目有一个复杂而强大的构建过程,其中使用限制暴露的自动化过程将所有 API 从.ts文件移动到d.ts文件中。( public_api_guard )

最终结果只是d.ts文件。

也不可能克隆 git repo 并使用它,因为同样,文件结构的方式不同,因此导入必须更改。最重要的是,如果没有构建 Angular 将很可能无法工作。

使用不同方法的解决方案

但是,如果您调试应用程序,您会注意到.ts在控制台的源代码视图中看到了实际的 angular 核心文件,这是因为 NPM 包附带了包含整个 TS 源代码的源映射文件。他们在那里做的很好的把戏。

这是我用来深入研究 angular 的方法,它的效果非常好,我从中得到了很多。它不像Goto Declaration但它那么好...... IMO 当你逐步完成代码时它也更容易理解......