Dav*_*ang 8 angularjs typescript typescript1.5
我尝试将现有的角度应用程序迁移到typescript(版本1.5.3):
这是代码:
'use strict';
angular.module('x')
.directive('tabsPane', TabsPane)
function TabsPane(itemTabs) {
return {
restrict: 'E',
compile: compileTabs
};
function compileTabs(tElement) {
var template = createTabsTemplate(); //function which i don't include here for brevity
tElement.append(template);
}}
Run Code Online (Sandbox Code Playgroud)
当我编译javascript我得到:
错误TS2345:类型的参数'(itemTabs:any)=> {restrict:string; compile:(tElement:any)=> void; }'不能赋值给'any []'类型的参数.类型'(itemTabs:any)=> {restrict:string; compile:(tElement:any)=> void; }".
我试着理解为什么它在这里抱怨我去了angular的typescript定义:
不知何故,打字稿暗示了这个定义
指令(name:string,inlineAnnotatedFunction:any []):IModule;
以下定义更合适:
指令(name:string,directiveFactory:IDirectiveFactory):IModule;
我对打字稿完全不熟悉,所以我认为我做错了,但我找不到任何与谷歌有关的东西.
我在从旧的 javascript angularJs 1.4.9 代码迁移到 typescript 2.6 代码时遇到了同样的问题。我正在使用 @types/angular 1.6.39 版。我添加了“any”作为参数函数的返回类型,例如:
angular.module("app")
.directive("tabsPane", function TabsPane(itemTabs): any {
return {
restrict: 'E',
compile: compileTabs
};
function compileTabs(tElement) {
var template = createTabsTemplate();
tElement.append(template);
}
});
Run Code Online (Sandbox Code Playgroud)
错误消失了:)
也许你必须更新你的 angular.d.ts 版本,因为在最新版本中我可以看到:
指令(名称:字符串,directiveFactory:IDirectiveFactory):IModule;
这将给出类似的内容:.directive('myCustomer', function(){...}
一旦编译
就在:
指令(名称:字符串,inlineAnnotatedFunction:任何[]):IModule;
这将给出类似.directive('myCurrentTime', ['$interval', 'dateFilter', function($interval, dateFilter) {...}
曾经编译过的东西(它实际上在这次提交中发生了变化,但它是一个很长一段时间的错误)
编辑(因为你似乎拥有最新版本的 angular.d.ts)
尝试使用以下语法指示函数的返回类型:
var TabsPane = (itemTabs) : ng.IDirectiveFactory => {}
归档时间: |
|
查看次数: |
6153 次 |
最近记录: |