当我使用 angular2 代码时,我经常需要查看类的实现,比如 Router
类。
如果我在我的 IDE WebStorm 中单击 Router
类型,e。 G。在另一个类的构造函数中
export class myClass {
constructor(private router: Router) {}
// ...
}
我的 IDE 将我带到 node_modules
文件夹中的 TypeScript 定义文件 router.d.ts
。我想要的是将我带到包含路由器类的实现的原始 router.ts
文件,而不仅仅是它的定义。
当您通过 standard package.json 从 github 获取 angular2 时,原始 .ts
文件未包含在 node_modules
文件夹结构中在 Angular2 快速入门中建议。目前,我必须在 the official github repo 中查找原始代码.
关于如何将 .ts
文件放入我的 node_modules/@angular
文件夹而不是 .d.ts
文件的任何想法?
最佳答案
遗憾的是,这是不可能的,因为不存在 TS 文件。即使你添加它们仍然不可能,因为你导入了始终指向定义文件的真实 Angular 路径。最重要的是,项目的文件结构与导入字符串文字的结构无关。
一些背景和更多信息
NPM 包不包含 .ts
文件,这是 Angular 团队设计的。直到不久前,.ts
文件确实随 NPM 包一起提供。
删除它们的原因是为了防止用户滥用访问私有(private)类和@internal
和私有(private) API,它们是 API 中不应公开但必须公开的公共(public)方法/属性其他 Angular 内部类可以使用它们。
我们过去经常看到很多代码示例在做类似 import { PromiseCompleter } from 'angular2/src/facade/lang';
(在 RC0 之前)的事情,但是当项目结构在 RC0 中有一个大的结构重构。这种滥用范围很广,而且很糟糕,非常糟糕……对于用户和 Angular PR。
Angular 项目有一个复杂而健壮的构建过程,其中所有 API 使用限制公开的自动化过程从 .ts
文件移动到 d.ts
文件. ( public_api_guard )
最终结果只有 d.ts
文件。
也不可能克隆 git 存储库并使用它,因为文件结构又大不相同,因此导入必须更改。最重要的是,如果没有构建,Angular 很可能无法工作。
使用不同方法的解决方案
但是,如果您调试您的应用程序,您会注意到您在控制台的源代码 View 中看到了实际的 Angular 核心 .ts
文件,这是因为 NPM 包附带了源映射文件,其中包括整个 TS 源代码。他们在那里玩得不错。
这就是我用来深入研究 Angular 的工具,它的效果非常好,我从中受益匪浅。
它不如 Goto Declaration
好,但它有点……
IMO 当您单步执行代码时,它也更容易理解...
关于javascript - 获取 Angular 2 .ts 文件而不是 .d.ts 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513237/