Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么此代码中存在类型转换错误?_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 为什么此代码中存在类型转换错误?

Angular 为什么此代码中存在类型转换错误?,angular,typescript,rxjs,Angular,Typescript,Rxjs,我不明白为什么这行this.claim=claim出现错误“无法将类型“A”转换为类型“Claim”。我需要返回一个observable,因为这个函数是在解析器中调用的。我实际上不需要返回声明本身,我只需要在ClaimStoreService上设置属性,但我不知道如何返回空的或无效的可观察值 export class ClaimStoreService { constructor(private readonly claimService: ClaimService) { }

我不明白为什么这行
this.claim=claim出现错误“无法将类型“A”转换为类型“Claim”。我需要返回一个observable,因为这个函数是在解析器中调用的。我实际上不需要返回声明本身,我只需要在ClaimStoreService上设置属性,但我不知道如何返回空的或无效的可观察值

export class ClaimStoreService {

    constructor(private readonly claimService: ClaimService) { }

    claim: Claim;

    getClaim(guid: string): Observable<Claim> {
        return this.claimService.get(guid).pipe(
            take(1),
            mergeMap(claim => {
                // Cannot convert type 'A' to type 'Claim'
                this.claim = claim;
                return of(claim);
            }));
    }
}
导出类ClaimStoreService{
构造函数(私有只读claimService:claimService){}
索赔:索赔;
getClaim(guid:string):可观察{
返回此.claimService.get(guid).pipe(
以(1)为例,
合并映射(声明=>{
//无法将类型“A”转换为类型“Claim”
这个索赔=索赔;
归还(索赔);
}));
}
}
索赔:索赔;
getClaim(guid:string):可观察{
返回此.claimService.get(guid).pipe(
以(1)为例,
//在这里输入将解决您的问题
合并映射((声明:声明)=>{
这个索赔=索赔;
归还(索赔);
}));
}

我想如果你使用
这个.claimService.get(guid)
你不必在
mergeMap中键入
claim
(claim=>

我讨厌这样的错误,我也讨厌使用
任何
。但是,你试过使用
mergeMap((claim:any)=>
mergeMap((claim:claim)=>
返回此.claimService.get(guid)
?谢谢!我没有想到这一点,因为我在
返回(索赔)
时没有收到类型错误。我在悬停时也看到了正确的类型,但这可能是重新剪切。我会尽快接受。
claim: Claim;

getClaim(guid: string): Observable<Claim> {
        return this.claimService.get(guid).pipe(
            take(1),
            // give type here will solve your issue
            mergeMap((claim:Claim) => {
                this.claim = claim;
                return of(claim);
            }));
    }