Angular2中出现“意外令牌实现”错误

时间:2016-01-13 19:21:53

标签: subclass ecmascript-6 angular

示例:

@Pipe({ name: 'values',  pure: false })
export class ValuesPipe implements PipeTransform {
  transform(value: any, args: any[] = null): any {
    return Object.keys(value).map(key => value[key]);
  }
}

ES6中似乎不支持类继承。有没有一种替代方法不需要对超类进行逆向工程?

1 个答案:

答案 0 :(得分:1)

ES6确实有类继承。类由extends继承。

当您使用implements时,您要求对接口进行类型检查。如果你想要类型检查你应该使用Typescript - 如果你不需要类型检查,那么你不需要implements。使用implements对输出代码没有影响 - 它只是在编译期间进行类型检查。

例如在打字稿中:

class myClass{
    public myID:number
    constructor(){
    }
     talk(){
         console.log("hi there");       
    }
}

class newClass {
    public myID:number;
    talk(){
        console.log("Hi from new Class");   
    }
}

class newClassImplements implements myClass {
    public myID:number;
    talk(){
        console.log("Hi from new Class");       
    }
} 

newClassnewClassImplements在编译后都会产生完全相同的javascript。带implements的版本只是要求编译器确保它与myClass具有相同的接口,如果它没有在编译时出错。

在上面的示例ValuesPipe中,PipeTransform不继承.nil?它只是实现了界面。如果您不需要类型检查,您应该只能编写所需的功能而忘记实现接口。

相关问题