Angular 2和Typescript应用程序 .
我在NPM包中有一个抽象类,我试图在我的应用程序代码中提供实现 . 这一切都很好,直到我添加了公共 isLoggedIn:Subject<boolean>;
属性 .
current-user.service.ts
@Injectable()
export abstract class CurrentUserContextService {
public isLoggedIn:Subject<boolean>;
public userId:string;
public userName:string;
public email:string;
public scope:string[];
constructor() { }
}
my-current-user.service.ts
@Injectable()
export class MyCurrentUserContextService implements CurrentUserContextService {
// interface properties.
public isLoggedIn:Subject<boolean>;
public userId: string;
public userName: string;
public email: string;
public scope: string[];
// add custom properties as needed.
constructor() { }
}
// add custom methods as needed.
}
main.ts
bootstrap(AppComponent, [
MyCurrentUserContextService,
{provide: CurrentUserContextService, useExisting: MyCurrentUserContextService}
])
Error
类'MyCurrentUserContextFactoryService'错误地实现了接口'CurrentUserContextFactoryService' . 属性“currentUserContext”的类型不兼容 . 类型'MyCurrentUserContextService'不能分配给'CurrentUserContextService'类型 . 属性'isLoggedIn'的类型不兼容 . “主题”类型不能指定为“主题”类型 . 属性“目标”受到保护,但“主题”类型不是从“主题”派生的类 .
1 回答
我发现了问题的根源...... Angular CLI&Broccoli!在花了一些时间整理一些项目以重现这个问题之后,我决定除了CLI生成的项目之外还使用Angular 2快速启动 .
Angular 2快速启动项目没有问题,但Angular CLI会产生错误 .
因此,通过从我的工具链中删除CLI并编写自己的工具代码,我可以获得可靠的TypeScript应用程序编译 .