javascript - 在 Visual Studio 上使用 AngularJS 和 Typescript 遇到很多问题(DefinitelyTyped)
在添加了这个简单的 AngularJS 控制器后,我在运行解决方案时,Visual Studio TypeScript 编译器出现了很多错误
/// <reference path="../../../Scripts/typings/angularjs/angular.d.ts" />
"use strict";
class ProgressBarController {
static $inject: Array<string> = ["$rootScope", "$element"];
static measure = "px";
static startPageFactor = 1;
static endPageFactor = 1;
private rootScope; // todo define RootScope boilerplate
private element: JQuery;
constructor($rootScope, $element: JQuery) {
this.rootScope = $rootScope;
this.element = $element;
}
getWidth(): string {
var self = ProgressBarController,
masterBarWidth = parseFloat(this.element.css("width").split(self.measure)[0]),
totalPages = this.rootScope.app.pages.length - self.endPageFactor,
eachPageProgress = (masterBarWidth / totalPages),
currentPage = this.rootScope.app.currentIndex(),
progress = eachPageProgress * (currentPage - self.startPageFactor);
return progress + self.measure;
}
}
angular.module("myDirectives")
.controller("progressBarController", ProgressBarController);
我正在使用 AngularJS 1.4.9,适用于 AngularJS 1.4+ 的 DefinitelyTyped angular.d.ts,以及带有 Resharper 9.0 更新 1 的 Visual Studio Community 2015。我的项目的 TypeScript 工具版本是 1.7,并且编译器目标为 ES3,以兼容 IE8。
错误多达400多个,其中95%来自jquery.d.ts。所有错误都不同,其中一个是“找不到名称 bool”。
我在使用 ng、IAngularStatic、IScope 等时也遇到了问题,所以我就直接避免使用它们了
答案#1
如果你从 NuGet 安装了 d.ts 包,你很可能安装了一个旧的 jQuery 依赖。更新 jQuery.d.ts NuGet 包,你就没问题了 :)