当我使用angular2代码时,我经常需要查看某个类的实现,让我们说Router
类。
如果我点击IDE WebStorm中的Router
类型,e。 G。在另一个类
export class myClass {
constructor(private router: Router) {}
// ...
}
我的IDE将我带到router.d.ts
文件夹中的TypeScript定义文件node_modules
。我想要的是带我到路由器类的实现的原始router.ts
文件,而不仅仅是它的定义。
当您通过Angular2快速入门中建议的standard package.json从github获取angular2时,.ts
文件夹结构中不包含原始node_modules
文件。目前,我必须在the official github repo中查找原始代码。
如何将.ts
文件放入我的node_modules/@angular
文件夹而不是.d.ts
文件?
答案 0 :(得分:4)
可悲的是,由于不存在任何TS文件,因此无法实现。即使你添加它们仍然不可能,因为你导入了始终指向定义文件的真正的角度路径。最重要的是,项目的文件结构与导入字符串文字的结构无关。
NPM包不包含.ts
个文件,这是由角度团队设计的。直到一段时间以前,.ts
文件确实随NPM包一起提供。
删除它们的原因是禁止用户访问私有类和@internal
以及私有API的滥用,这些API是API中的公共方法/属性,不应该是公开的,但必须是其他角度内部类可以使用它们。
我们曾经看过很多代码样本,比如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
文件,这是因为NPM软件包附带了包含整个TS源代码的源映射文件。他们在那里做的很好的技巧。
这是我用来深入挖掘角度的东西,它的效果非常好,我从中得到了很多。
它不如Goto Declaration
那么好,但它有点......
当您单步执行代码时,IMO也更容易理解......