方法如何将null作为接口

时间:2018-03-01 20:12:24

标签: javascript typescript resharper

提供此TypeScript代码:

interface MyInterface{
    myInterfaceProperty: string
}

class MyClass{
    myClassProperty: MyInterface

    myClassMethod(flag: boolean): MyInterface {
       if (flag)
           return null;

       myClassProperty = //...
       return myClassProperty;
    }
}

代码编译正常但ReSharper抱怨return null;

  

无法隐藏类型'any'以输入'MyInterface'

返回null接口的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

一个问题是,Typescript将null和undefined都计为不同的类型,而不是MyInterface对象的未初始化状态。您可以在Typescript文档中找到并进一步讨论:here

您可以更改myClassMethod的类型定义以包含null作为其中一种可能的返回类型,它们看起来像这样:

myClassMethod(flag: boolean): MyInterface | null {

您列出的错误似乎不是null值的结果。它更可能是由myClassMethod的实现引起的。在你的myClassMethod中 - 至少在这个例子中 - 你没有引用this.myClassProperty(一个实现MyInterface接口的对象),但实际上是在创建一个没有类型的新变量,并且不一定实现所需的myInterfaceProperty属性。

将此更改为this.myClassProperty可能会解决此错误。