更新了我的Typescript定义,打破了angular指令

我刚刚将我的Typescript定义更新为今天的最新版本 . 在 angular.d.ts 中,现在是 IDirective 接口中 scope 的定义:

interface IDirective {
    ...
    scope?: boolean | {[boundProperty: string]: string};
    ...
}

我的指令定义为这样(用字母代替实际名称和省略不相关的代码):

export class MyDirective implements angular.IDirective {
    scope = {
        a: "&",
        b: "@?",
        c: "=?",
        d: "=?",
        e: "@?",
    }
}

我收到这个编译时错误:

错误类'MyDirective'错误地实现了接口'IDirective' . 属性“范围”的类型不兼容 . 输入'{a:string; b:字符串; c:字符串; d:字符串; e:字符串; }'不能赋值为'boolean | {[boundProperty:string]:string; }” . 输入'{a:string; b:字符串; c:字符串; d:字符串; e:字符串; }'不能赋值为'{[boundProperty:string]:string; }” . 类型'{a:string;中缺少索引签名; b:字符串; c:字符串; d:字符串; e:字符串; }” .

我没有't understand why I'得到这个 . 每个属性都是一个字符串,这是 { [boundProperty: string]: string; } 部分想要的,不是吗?

如何更改范围定义以适应更新的定义?

回答(1)

3 years ago

我尝试了你的代码,它很好 . 我会关闭并重启你正在使用的任何IDE,看看这个错误是否消失;当TypeScript错误没有意义时,这似乎对我作为Visual Studio用户非常频繁 .

如果这不起作用,请确保将您的TypeScript编译器版本更新为最新版本 .

我知道这不是最新的,但这是我正在使用的输入:registry:dt / angular#1.5.0 20161101124950我的TypeScript版本:2.1.5.0