Typescript-如何解决“类型'undefined'不能分配给类型'XXXX'”的问题?

帕里托什米

我有一些属性定义的接口。尝试访问该服务时,出现此错误-显示文件中的“未定义”类型不可分配this.isOpen我需要帮助来解决此错误。

注意-我无法在配置文件中设置值,例如 "strictNullChecks":false

接口

export interface DataFile {
  file?: DataFile[];
  location: string;
}

打字稿课


  isOpen?: DataFile;

  Scan(aero: string, TeamClass: string) {
    if (TeamClass === 'Hawkins') {
      if (this.redService.name.file && this.redService.name.file.length > 0) {
        this.isOpen = this.redService.name.file.filter((data: DataFile) => data.location == aero[0])[0];
      }
    }
    
    this.displayfile(this.isOpen).then(async () => {  ----->>>>>> Error at this.isOpen
            //rest of the functionality
        }
      }
    });
  }

我遇到错误-

 Argument of type 'DataFile | undefined' is not assignable to parameter of type
'DataFile'.
  Type 'undefined' is not assignable to type 'DataFile'.
jayg_code

通过设置isOpen问号,它可以选择两种类型:一种DataFile(您的类型)和undefined这就是Typescript报告错误的主要原因。

要解决此问题,您有两种选择:

  • 检查是否isOpen填充了数据,即:
if (!isOpen) { /* do something */ }
...rest of code
  • 前面isOpen加一个!(即this.isOpen!),这样您就可以强制类型未定义。不建议这样做,因为如果确实未定义,则会在this.displayfile函数内部遇到错误

有关问号运算符的参考,请参见:https//www.geeksforgeeks.org/why-use-question-mark-in-typescript-variable/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使在 .filter 函数删除 undefined 之后,Typescript 类型 (string | undefined ) 也不能分配给类型 string[]

Angular TypeScript:“类型 '(string | undefined)[]' 不能分配给类型 'string[]'。”

Person 类型的 TypeScript 错误 (TS2345) 参数 | undefined 不能分配给 Person 类型的参数

类型'false'不能分配给类型'(((status:number)=> boolean)| undefined'TypeScript

如何解决`Type 'string[] | undefined' 不能以最好的方式分配给类型 'string[]'.`?

如何修复错误类型 Item[] | undefined 不能使用 react 和 typescript 分配给 Item[] 类型?

如何配置TypeScript来避免:类型'string'不能分配给类型'“ desc” | “ asc” | undefined'.ts(2322)?

Typescript(类型'undefined'不能分配给类型)为什么我的数组有一个|号?未定义?

类型 'undefined' 不能分配给类型 '(number | null)[]'

类型'undefined'不能分配给'never'类型

TypeScript:“any”类型不能分配给“never”类型

TypeScript错误:类型'()=>布尔'不能分配给类型'布尔'

TypeScript 错误:类型 'string' 不能分配给类型 'number | ""'

如何解决“类型‘字符串’不可分配给‘从不’类型”的问题?

如何解决“无法将“CATextLayerAlignmentMode”类型的值分配给“String”类型的问题?

dart - 如何解决“无法将参数类型“Null”分配给参数类型“MyUser”的问题。

TypeScript:'Card | 类型的参数 undefined' 不可分配给类型为 'Card' 的参数

如何解决“null”类型的参数不可分配给“GoogleUser”类型的参数的问题 不明确的'

节点打字稿:输入'"X" | “哦” | undefined' 不能分配给类型 '"X" | “哦”'。类型 'undefined' 不能分配给类型 '"X" | "O"'.ts(2322)

Typescript Pick <>类型失败:类型'“ foo”'的参数不能分配给类型'Pick <Bar,“ foo”>'的参数

Typescript类型的React类型参数不能分配给类型参数

Typescript-无法将“ undefined”类型分配给“ string | type” 编号| 符号'

在TypeScript中,为什么可以将“ null”分配给类型“ undefined”的变量,反之亦然

TypeScript 地图:键入 'number | undefined' 不可分配给类型 'number'

我的TypeScript函数中出现“无法分配给类型”从不”的问题

'number | 类型的参数 undefined' 不能分配给“string”类型的参数

'(string | undefined)[]' 类型的参数不能分配给 'string[]' 类型的参数

Angular - 'IContact[] 类型的参数 | undefined' 不能分配给类型为 'IContact[]' 的参数

“字符串类型的参数不能分配给自定义类型的参数”的难看的问题