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

标签 javascript angular webstorm

当我使用 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/

相关文章:

javascript - 去除背景颜色

Javascript字符串是原型(prototype)函数吗?

angular 2 Observable完成未调用

javascript - 使用 Angular、ExpressJS、NodeJS 下载带有按钮的文本文档

node.js - 创建 Node js Express 应用程序项目时出现错误

javascript - 在 javascript 中使 3D 相机绕物体旋转

javascript - 在 App Insights 中收集 JavaScript 控制台消息

html - Angular Cards 在 flex-layout 行中的高度相同

intellij-idea - IntelliJ IDEA能否通过插件封装WebStorm和PHPStorm的所有功能?

error-handling - 父类(super class)构造函数调用应该在构造函数主体中