Javascript 导入管道抛出Typescript属性不存在错误

Javascript 导入管道抛出Typescript属性不存在错误,javascript,angular,typescript,ionic3,Javascript,Angular,Typescript,Ionic3,我使用的是ionic,并创建了一个自定义管道,它接受一个表示图像数据的对象并返回该图像的URL 管道文件看起来像这样 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'eventImageLink', }) export class EventImageLinkPipe implements PipeTransform { /** * Takes a value and makes it low

我使用的是ionic,并创建了一个自定义管道,它接受一个表示图像数据的对象并返回该图像的URL

管道文件看起来像这样

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'eventImageLink',
})
export class EventImageLinkPipe implements PipeTransform {
  /**
   * Takes a value and makes it lowercase.
   */
  transform(value: string, ...args) {
    if(value){
      return `//res.cloudinary.com/***/image/upload/w_${window.screen.width},d_item_placeholder_e0lign.jpg/${value.image_version}/${args[0]}/${value.original_image_name}`;
    }
  }
}
我已经在导入我的管道的
pipes
文件夹中创建了一个
pipes.module.ts
文件

import { NgModule } from '@angular/core';
import { EventImageLinkPipe } from './event-image-link/event-image-link';

@NgModule({
  declarations: [
    EventImageLinkPipe
  ],
  imports: [

  ],
  exports: [
    EventImageLinkPipe
  ]
})
export class PipesModule {}
现在,在我将
PipesModule
导入组件以供使用之前,我遇到了以下错误

打字脚本错误

类型“string”上不存在属性“image\u version”


我甚至还没有尝试使用它,我不明白为什么会出现这个错误,这真的很烦人。有人能解释一下为什么要执行管道,以及当我还没有将任何数据传递到管道中时如何防止抛出此错误吗?

好的,您声明了input
value:string
,这意味着您将在将来传递string类型的对象。
string的类型
没有
image\u版本的属性
,正如错误所说,这是一个错误,您的代码根本无法工作。您正在尝试调用
value.image\u version
作为返回结果的一部分,您需要将
value
更改为正确的类型,但不确定它在您的情况下是哪种类型

您可能有一个自定义类:

export class MyImage {
    image_version: string;
    original_image_name: string;
}
然后,您可以将一个
值:MyImage
声明为
MyImage
类的类型,Typescript可以使用,因为它包含
image\u version
original\u image\u name
这两个属性,而不像
string
类型


此外,实际上没有执行任何操作,只是TypeScript的静态类型检查,这可以防止您犯这样愚蠢的错误。如果不想使用静态类型检查功能,也可以将其设置为
value
,不指定类型。这样,您可以传递您想要的任何内容,如果它是错误类型的对象,它将在运行时崩溃。

您声明了input
value:string
,这意味着您将在将来传递string类型的对象。
string的类型
没有
image\u版本的属性
,正如错误所说,这是一个错误,您的代码根本无法工作。您正在尝试调用
value.image\u version
作为返回结果的一部分,您需要将
value
更改为正确的类型,但不确定它在您的情况下是哪种类型

您可能有一个自定义类:

export class MyImage {
    image_version: string;
    original_image_name: string;
}
然后,您可以将一个
值:MyImage
声明为
MyImage
类的类型,Typescript可以使用,因为它包含
image\u version
original\u image\u name
这两个属性,而不像
string
类型


此外,实际上没有执行任何操作,只是TypeScript的静态类型检查,这可以防止您犯这样愚蠢的错误。如果不想使用静态类型检查功能,也可以将其设置为
value
,不指定类型。这样你就可以传递你想要的任何东西,如果它是一个错误类型的对象,它就会在运行时崩溃。

我知道这是一个我没有看到的简单的东西。事实上,将图像变成一个类也是一个好主意,所以我也这么做了。我刚刚将
value:string
更改为
value:any
,以确保它将接受一个类和一个对象。我知道这很简单,但我没有看到。事实上,将图像变成一个类也是一个好主意,所以我也这么做了。我刚刚将
value:string
更改为
value:any
,以确保它将接受类和对象。