使用TypeScript和Angular 1

时间:2016-12-28 11:03:11

标签: javascript angularjs typescript angularjs-directive definitelytyped

尝试使用TypeScript创建新的angular指令时,我遇到了问题。只有在我计划在指令中使用隔离范围时才会出现此问题。以下是我正在做的事情:

module Foo.Layout {
    "use strict";
    class SidebarDirective implements ng.IDirective {

        templateUrl = "/layout/sidebar/sidebar.html";
        restrict = "E";
        controller = SidebarController;
        scope = {
            align: "@"
        }

        static factory() {
            var instance = () => {
                return new SidebarDirective();
            }
            return instance;
        }       
    }
    angular.module("app.layout").directive("fooSidebar", SidebarDirective.factory());
}

仅在添加scope = {...}语句时才会出现此问题,否则编译正常。下面是错误。

  

错误TS2420类'SidebarDirective'错误地实现了接口   'IDirective'。属性“范围”的类型不兼容。   输入'{orientation:string; }'不能赋值为'boolean | {[boundProperty:string]:string; }”。           类型'{orientation:string; }“

是的,我的打字ng.IDirective的范围属性为scope?: boolean | {[boundProperty: string]: string};

在我的指令中创建隔离范围的理想方法是什么? (我使用的是angularjs.TypeScript.DefinitelyTyped版本6.5.5)

1 个答案:

答案 0 :(得分:0)

你试过

吗?
scope = {
            align: "="
        }