为什么打字稿将我的参数声明为未定义?

问题描述 投票:0回答:1

在下面的函数中,我尝试调用 ProductServices 的 getSelectProduct 方法。

  private getSelectedProduct = () => {
    const productId = this.activatedRoute.snapshot.paramMap.get('productId');
    console.log('selectedProduct', productId)
    this.productService.getSelectedProduct(productId).subscribe(product => {
      this.selectedProduct = product;
    })
  }

Typescript 在这个语句中的productId 下给了我一个红色的波浪线:

getSelectedProduct(productId)
。错误信息是:

'string | 类型的参数null' 不可分配给'string' 类型的参数。 类型“null”不可分配给类型“string”。ts(2345) const ProductId: 字符串 |空

这是所选产品的声明:

public selectedProduct?:ProductModel;

这是 getSelectedProduct 方法:

public getSelectedProduct = (productId:string) => {
    const product = this.productSignal().products.find(product => product._id === productId)
    return of(product)
  }
angular typescript
1个回答
0
投票

基于 Guy Incognito 建议:考虑 ProductId 为 null 时的情况;

private getSelectedProduct = () => {
    const productId = this.activatedRoute.snapshot.paramMap.get('productId');
    console.log('selectedProduct', productId)
    if(productId !== null) {
      this.productService.getSelectedProduct(productId).subscribe(product => {
        this.selectedProduct = product;
        console.log('selectedProduct', this.selectedProduct)
      })
    }    
}
© www.soinside.com 2019 - 2024. All rights reserved.