Mhd*_*Mhd 5 javascript resharper typescript
给出这个 TypeScript 代码:
interface MyInterface{
myInterfaceProperty: string
}
class MyClass{
myClassProperty: MyInterface
myClassMethod(flag: boolean): MyInterface {
if (flag)
return null;
myClassProperty = //...
return myClassProperty;
}
}
Run Code Online (Sandbox Code Playgroud)
该代码编译良好,但ReSharper抱怨return null;:
无法将类型“any”隐藏为类型“MyInterface”
返回空接口的正确方法是什么?
一个问题是 Typescript 将 null 和 undefined 都视为不同的类型,而不是 MyInterface 对象的未初始化状态。您可以在 Typescript 文档中找到对此的提及和进一步讨论:此处。
您可以更改 myClassMethod 的类型定义以包含 null 作为可能的返回类型之一,如下所示:
myClassMethod(flag: boolean): MyInterface | null {
Run Code Online (Sandbox Code Playgroud)
但是,您列出的错误似乎不是空值的结果。这更有可能是由 myClassMethod 的实现引起的。在 myClassMethod 内部 - 至少在本例中 - 您没有引用 this.myClassProperty (实现 MyInterface 接口的对象),但实际上正在创建一个没有类型且不一定实现所需属性的新变量myInterfaceProperty。
将此更改为this.myClassProperty可能会修复此错误。
| 归档时间: |
|
| 查看次数: |
2508 次 |
| 最近记录: |