' 不可分配给类型 'Subject'-6ren"> ' 不可分配给类型 'Subject'-Angular 2 和 Typescript 应用。 我在 NPM 包中有一个抽象类,我试图在我的应用程序代码中提供实现。这一切都很好,直到我添加了公众 isLoggedIn:Subject;属性(p-6ren">
gpt4 book ai didi

angular - typescript 错误 "incorrectly implements interface"类型 'Subject' 不可分配给类型 'Subject'

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:03 30 4
gpt4 key购买 nike

Angular 2 和 Typescript 应用。

我在 NPM 包中有一个抽象类,我试图在我的应用程序代码中提供实现。这一切都很好,直到我添加了公众 isLoggedIn:Subject<boolean>;属性(property)。

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() { }

}

我的当前用户.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.

}

ma​​in.ts

bootstrap(AppComponent, [    
MyCurrentUserContextService,
{provide: CurrentUserContextService, useExisting: MyCurrentUserContextService}
])

错误

类“MyCurrentUserContextFactoryService”错误地实现了接口(interface)“CurrentUserContextFactoryService”。 属性“currentUserContext”的类型不兼容。 类型“MyCurrentUserContextService”不可分配给类型“CurrentUserContextService”。 属性“isLoggedIn”的类型不兼容。 类型“主题”不可分配给类型“主题”。 属性“destination”受到保护,但类型“Subject”不是从“Subject”派生的类。

最佳答案

我发现了问题的根源……Angular CLI 和 Broccoli!在花了一些时间整理一些项目来重现这个问题后,我决定除了使用 CLI 生成的项目之外,还使用 ​​Angular 2 快速入门。

Angular 2 快速启动项目没有问题,但 Angular CLI 会毫无异常(exception)地产生错误。

因此,通过从我的工具链中删除 CLI 并编写我自己的工具代码,我可以获得可靠的 TypeScript 应用程序编译。

关于angular - typescript 错误 "incorrectly implements interface"类型 'Subject<boolean>' 不可分配给类型 'Subject<boolean>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885600/

30 4 0