4

我一直在尝试最新版本的 Angular2 (2.0.0-alpha.44) 和 Visual Studio 2015。以下是我正在使用的与此问题相关的所有版本:

  • 视觉工作室 2015
  • ASP.NET 5
  • 打字稿 1.6
  • 锐化器 10
  • 角 2.0.0-alpha.44

这是我的解决方案:

解决方案探索者

我所有的打字稿都在 /Ts 目录中,该目录也有一个tsconfig.json文件。这使得 Visual Studio 显示一个“打字稿虚拟项目”

tsconfig.json ts 虚拟项目的解决方案

一旦我将import {Component, bootstrap} from "angular2/angular2";行放入我的main.ts,它就会在我的目录中找到 angular2 库文件node_modules并显示这些文件(虽然不确定扁平目录结构是什么)

ts 更清晰的警告

此时,打字稿编译器将编译该单个文件(main.ts)。但是,它不再编译该文件夹中的任何其他 .ts 文件(在引入 angular2 之前),并且它不会将输出放在我的tsconfig.jsonoutFile的指定位置

Resharper 表示在查找Componentbootstrap引用时存在问题,但工具提示似乎也能理解这些的签名是什么。不知道两者怎么可能是真的。

如果我从等式中删除 angular2,typescript 会很高兴地遵循我的 tsconfig.json 中的所有设置,将所有 .ts 文件编译成app.js并将其放入../wwwroot/js/app.js

带有工具提示的 ts resharper 警告

有没有人成功让 VS2015、typescript 和 angular2 一起玩得很好?

4

3 回答 3

2

来自TypeScript 手册:

在 TypeScript 中,就像在 ECMAScript 2015 中一样,任何包含顶级导入或导出的文件都被视为一个模块。

就像 JS 文件和模块之间是一一对应的一样,TypeScript 在模块源文件和它们发出的 JS 文件之间也是一一对应的。这样做的一个影响是不可能使用 --outFile 编译器开关将多个模块源文件连接到一个 JavaScript 文件中。

我相信这就是您“从等式中删除 angular2”时输出的原因。模块和outFile不兼容。改为使用outDir

另外,我尝试将 tsconfig 文件放在子文件夹中,但 Visual Studio 不尊重它,因此我将其移回项目根目录。

于 2015-11-10T17:04:19.050 回答
1

我已经尝试了几个星期了。d.ts 文件似乎仍然不正确。如果您注意到,定义文件仍在 alpha 38 或 39 上。

即使定义文件不在 alpha 38 或 39 上,并且是从正确的版本创建的,我仍然认为你不能让它工作,因为它绝不是固化的形状或形式,它仍然缺少一个一堆我相信的东西。

你得到的错误我还没有看到,我不使用 resharper (虽然我认为这不应该真的导致你的问题)。我能说的是,我确实在 alpha 26 上取得了成功,在这里可以找到:

https://github.com/microsoft/ngconf2015demo

它可能对你没有帮助,因为它是一个早期的 alpha 版本。

此外,在较新的 Alpha 版中,他们已经开始创建 UpdateAdapter,可以在此处找到示例:

http://blog.thoughtram.io/angular/2015/10/24/upgrading-apps-to-angular-2-using-ngupgrade.html

这是一个非常重要的组件,因为每个尝试早期采用的人都希望在 angular2 中使用 angular1 指令。

我也不能让它工作(即使这是一个超级新的 alpha 版本)。定义文件仍然只有 39 个,并且它们之间存在一些差异。即使我按原样导入他的整个项目,也有很多缺失的引用和导出。除了尝试自己修改 d.ts 文件以消除构建错误外,对此无能为力。

另外,我相信模块系统应该设置为 AMD。这将帮助您更接近解决编译时错误。此外,在 Visual Studio 中,您需要将标准设置为 es5 我相信为了让 angular2 目前运行(但我不确定,这只是我用来运行 alpha 26 示例的步骤)。

我仍然每天在工作中尝试,所以如果我能够让它运行(我认为如果不深入 angular2 代码库并学习它,我将无法做到这一点,我可能会在下一个几周),我将编辑此回复并让您知道。与此同时,继续插电,看看你能不能让它工作,然后告诉我!

在我看来,任何行业领导者都需要尽快采用 angular2,因为使用 angular2 的优势无法充分表达。不幸的是,由于任何应用程序中绝对需要的许多指令仍在使用 angular 1.4,因此 UpgradeAdapter (ngUpgrade) 需要在 angular2 从业务角度有用之前可用。

编辑:

实际上,现在似乎定义文件现在位于 angular2 源中,而不是 tsd。尝试从 angular2 源中获取 d.ts 文件,然后尝试编译 typescript 文件。

于 2015-11-06T00:57:36.787 回答
0

使用 angular 2.0 设置 ASP.Net 5按照页面中的所有步骤进行操作。它对我有用。

无论服务器是否正在运行,都将 all.ts 文件编译为 .js。

打开 PowerShell -> 重定向到项目的根文件夹并输入“tsc”。它将编译所有文件。

如果要在保存/更新 .ts 文件时编译所有 .js 文件,请在 PowerShell 中键入“tsc--watch”,不要关闭它。

您必须安装节点。

创建以下文件和数据必须与Angualr 快速入门相同

tsconfig.json
typings.json
package.json

用于在 CMD 或 PowerShell 中打开项目根文件夹的 Visual Studio 插件

于 2016-04-08T05:31:37.907 回答