我定义了一些属性的接口。尝试访问该服务时,我收到此错误 - 在 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'.
答案 0 :(得分:0)
通过用问号设置 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/