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 中做错了吗?
解决方案
这是 TypeScript 的一个怪癖。
为了暂时解决这个问题,您可以执行“类型转换”来告诉编译器layer
在您使用它时没有未定义。
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
并且您将其显式设置为undefined
. 然后,您只需在使用它之前检查以确保它不是未定义的。
推荐阅读
- java - 智能表登录期间出现 ClassNotFoundException
- c++ - QLabel 没有出现在 QOpenGLWidget 上
- python - Scipy.ode“错误测试反复失败”
- rxjs - 当 Subject 有 0 个观察者时删除 Observable 订阅
- reactjs - ESLint 在结尾的变量上抛出“解析错误:意外的令牌:”:
- unity3d - Unity + Mapbox IFeaturePropertySettable 在从多边形生成的网格上?
- javascript - div自动宽度,创建动画
- jquery - JQuery查找并将类添加到元素
- css - 为什么 IE 和 Edge 会忽略整个 CSS 规则?
- java - PKIX 路径构建失败。我们应该导入证书吗?