我在Visual Studio 2013中使用TypeScript。我使用npm安装tsd,然后使用tsd命令下载类型定义。我在输入时得到intellisense但是在输入一行之后我得到了红色波浪形和一个“无法找到符号x”的错误(用ng替换x,角度等)。我可以控制 - 单击并转到定义,因此显然Visual Studio可以找到源定义,但编译器不能。下面的屏幕截图显示了我为我的指令创建的.ts文件中的错误。我缺少什么想法?
答案 0 :(得分:0)
该文件需要引用angular.d.ts。此外,设置值的代码也不正确。例如,它应该是restrict: "E"
,而不是public restrict = "E";
。冒号告诉Typescript它是一个类型定义。
我很好奇,为什么我需要angular.d.ts参考,为什么tds.d.ts无法工作,因为它反过来会引用angular.d.ts。是否通常在每个角度文件的顶部放置对d.ts文件的引用?如果是这样,我的项目可能会有超过150个angularjs文件。
这是最终的工作代码:
///<reference path="../../../typings/angularjs/angular.d.ts" />
module eStore.PromoCode {
export class PromoCodeDirective implements ng.IDirective {
public restrict = "E";
public templateUrl = "Scripts/Checkout/PromoCode/promoCode.html";
public scope = {};
public controller = "PromoCodeController as vm";
static factory(): ng.IDirectiveFactory {
return () => new PromoCodeDirective();
}
}
angular.module("eStoreCheckout").directive("dccPromoCode", PromoCodeDirective.factory());
}