网站搜索

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 包,你就没问题了 :)