Angularjs Typescript在我的指令中找不到范围或属性

Angularjs Typescript在我的指令中找不到范围或属性,angularjs,angularjs-scope,typescript,Angularjs,Angularjs Scope,Typescript,我更多地使用typescript来检查我的应用程序的错误和键入,而不是真正使用任何ES6风格的代码,但我遇到了一个问题。在我的angular指令中,链接函数中的animate和attr.animate未被typescript识别。我安装了angular和jquery的打字,并且我有参考链接。我有什么遗漏吗?这是我的Typescript文件(main.ts) // /// /// var-app=angular.module(“app”,“ngAnimate”); 应用程序工厂(“数据服务”

我更多地使用typescript来检查我的应用程序的错误和键入,而不是真正使用任何ES6风格的代码,但我遇到了一个问题。在我的angular指令中,链接函数中的animate和attr.animate未被typescript识别。我安装了angular和jquery的打字,并且我有参考链接。我有什么遗漏吗?这是我的Typescript文件(main.ts)

//
/// 
/// 
var-app=angular.module(“app”,“ngAnimate”);
应用程序工厂(“数据服务”),()=>{
变量数据={};
返回数据;
});
应用程序服务(“通知”,函数(){
var notifyService=this;
notifyService.message=“一些消息。”;
notifyService.test=函数(){
返回“新消息”;
}
notifyService.showHide=false;
notifyService.setShowHide=函数(值:布尔值){
notifyService.showHide=值;
}
notifyService.setMessage=函数(val){
notifyService.message=val;
}
notifyService.style=“颜色:白色;字体大小:粗体;背景色:黑色;”
})
app.controller(“AppCtrl”,函数($scope、$q、$http、Notify、DataService){
var-appCtrl=this;
appCtrl.notify=notify;
});
app.animation(“.fade”,函数(){
返回{
addClass:函数(元素,类名){
如果(!TweenMax.isTweening(元素))
TweenMax.to(元素,2,{opacity:1})
},
removeClass:函数(元素,类名){
如果(!TweenMax.isTweening(元素))
TweenMax.to(元素,2,{opacity:0})
}
}
});
app.directive(“clickable”,函数(Notify,DataService,$http):ng.IDirective{
返回{
限制:“王牌”,
范围:{
动画:“@”
},
链接:功能(范围、元素、属性){
活动范围;
元素绑定(“单击”,函数(){
作用域$apply(函数(){
Notify.setMessage(“来自单击事件的消息”);
console.log(Notify.message);
})
});
}
}
})
元素(文档).ready(函数(){
引导(document.querySelector(“body”),[“App”]);

})
如果没有任何打字,就会出现这个错误,这真的很奇怪。通常,如果您要执行以下操作,则可能会出现此错误:

    link:function(scope:ng.IScope, 
               element: ng.IAugmentedJQuery,
               attrs: ng.IAttributes,){
但默认情况下,这些参数的类型应为
any
。但是,您应该能够通过创建自定义类型来修复它:

interface clickableVM extends ng.IScope{
    animate:string;
}

interface clickableAttrs extends ng.IAttributes{
    animate:string;
}
并将它们设置为参数:

 link:function(scope:clickableVM , 
               element: any,
               attrs: clickableAttrs){

这是您编译的js文件还是ts文件?如果它是ts文件,那么没有任何类型规范的元素和attr应该只是类型
any
,因此您不应该得到这些问题中的任何一个。这是我的typescript文件。当我尝试使用scope.animate或访问修复它的属性时,它不会编译。我猜您必须将它添加到IScope接口中,该接口位于Angular Type中。我对打字还是有点陌生。我以前写过C#代码,也做过asp.NETMVC,所以打字脚本更容易理解。但是我很惊讶它没有识别scope对象。它认出了它。我也要对控制器做同样的事情吗?@Jesse,这要看情况而定。你不必那么做。但这就是使用
类型
脚本的全部目的:好的,我会用它做更多的实验。