Visual Studio中的Angular 2 beta类型(ASP.NET 4)

时间:2016-02-28 07:22:28

标签: visual-studio typescript angular

在Angular 2.0的alpha版本中,我使用DefinitelyTyped中的文件在Visual Studio中使用TypeScript的类型。只需将d.ts文件添加到项目中即可。在当前的beta阶段,这似乎有所不同,因为DefinitelyTyped不再提供此文件,并且它们已被直接移动到角度仓库。

问题在于,我不知道首先要包含哪个文件到项目中,包括所有这些文件在编译时都会引发大量错误。

我的设置是一个DNN网站,我的VS项目驻留在DesktopModules文件夹中,这意味着我的项目不是网站的根目录。我使用SystemJS从该站点内的不同位置加载组件。

是否有一种简单的方法可以包含一个d.ts文件或组合它以便TypeScript可以正确编译?

编辑 - 更详细地解释:

当我在alpha中使用import语句import * as ng from 'angular2/angular2'时,' angular2 / angular2' (path和JS文件)由SystemJS解析,Visual Studio知道它,因为声明了模块的定义文件。我如何实现Visual Studio将再次了解这一点?我尝试了几个小时没有成功,除了使用旧的Alpha阶段.d.ts文件并稍微更改它以将其声明为angular2/core

如何解决此问题没有使用ASP.NET 5的新项目系统?

3 个答案:

答案 0 :(得分:1)

由于TypeScript引入了" exclude"在tsconfig.json中,设置项目的首选方法是使用"文件"而不是手动包含作为项目一部分的每个文件。在tsconfig部分,您可以排除不需要的部分,其他所有部分都将自动被视为项目的一部分。

Angular2以打字为主。您不再需要通过tsd / typings手动添加它们。您的IDE应该能够自动解决它们。

确保您至少排除" node_modules" tsconfig.json中的文件夹,所以编译器不会尝试编译它的内容,你不会得到大量的重复标识符"错误。

有关详细信息,您可以专门针对VS进行示例演练:Starting Angular 2 in ASP.NET 5 with TypeScript using Visual Studio 2015

答案 1 :(得分:0)

我提出了一个非常简单的解决方案。我可以接受这种解决方法,因为它只在开发时才需要。

首先,为了完成所有神奇工作,您必须使用DNN的GitHub源代码,并将您的项目包含在解决方案中。

对于Visual Studio来查找输入,我只是将angular2文件夹从我的JSPM位置复制到网站的根目录(另外还需要rxjs)。在这种情况下,语句import * as ng from 'angular2/core'将允许Visual Studio在网站的根目录中搜索名为angular2的文件夹和名为core的文件。通过这样做,一切都编译得很好,所有错误都消失了,IntelliSense再次运行。

这在运行时没有问题,因为所有脚本文件都是通过SystemJS从JSPM包所在的位置加载的(换句话说,不需要那些新复制的文件夹,只需要VS找到打字)。

我还想提一下,Angular本身没有问题,TypeScript只是对JSPM一无所知,因此无法找到正确的位置来加载类型。关于GitHub上的TypeScript repo的讨论可以为您提供更多详细信息。在未来的版本中,可以有一种方法告诉TypeScript一些查找路径,甚至可能是JSPM和TypeScript的集成。

https://github.com/Microsoft/TypeScript/issues/6012

答案 2 :(得分:-1)

我发现VS中真正重要的包括typescript.d.ts文件。它位于node-modules \ typescript \ lib文件夹中。我还在index.html中包含了js文件,但这只是为了摆脱红色的squigles。