空检查后对象可能是“未定义”的

时间:2019-09-10 14:03:38

标签: typescript

我要

  

使用可变的“图层”,然后再进行分配。

此处:if(layer == null || layer == undefined){

public static myFunc(type: number) {
    var layer: VectorLayer;
    if (type === 1) {
        layer = Map.getStaticVariableOne();
    } else if (type === 2) {
        layer = Map.getStaticVariableTwo();
    }
    if(layer == null || layer == undefined){
        return;
    }
    Utils.doThings(layer);
}

我在Typescript中做错了吗?

2 个答案:

答案 0 :(得分:1)

只需检查layer是否存在:

if (!layer) {
  return;
}
Utils.doThings(layer);

要检查更多详细信息,不仅要针对真实值:

if (layer === undefined || layer === null) { // Or just layer == null
  return;
}
Utils.doThings(layer);

答案 1 :(得分:0)

这是TypeScript的怪癖。

要暂时解决此问题,您可以执行“类型转换”以告诉编译器在使用addHeader时未定义。

layer

或者,您可以执行以下操作(tested):

Utils.doThings(<VectorLayer> layer);

// alternatively
// Utils.doThings(layer as VectorLayer);

主要区别在于,您可以将图层指定为public static myFunc(type: number) { var layer: VectorLayer | undefined = undefined; if (type === 1) { layer = TestMap.getStaticVariableOne(); } else if (type === 2) { layer = TestMap.getStaticVariableTwo(); } if (layer === null || layer === undefined){ return; } Utils.doThings(layer); } ,并将其明确设置为undefined。然后,您只需要检查一下以确保它没有未定义即可。