如何修复对象可能是“未定义”的 TS 2532 问题?下面附上代码

问题描述 投票:0回答:2
    147 |               const values = {
    148 |                 coords: {
  > 149 |                   lat: res.geometry.location.lat(),
        |                        ^
    150 |                   lng: res.geometry.location.lng(),
    151 |                 },
    152 |                 address,

问题文字:

(属性)google.maps.places.PlaceGeometry.location?:google.maps.LatLng |不明确的 该地点的位置。

对象可能是“未定义”。ts(2532)

typescript google-maps
2个回答
0
投票

它的意思正是它所说的,您尝试传递给对象的值可能是未定义的,您可以做的是在传递项目之前使用javascript的Nullish合并运算符检查其是否未定义,例如:

const values = {
  coords: {
    lat: res.geometry.location.lat() ?? defaultLat,
    lng: res.geometry.location.lng() ?? defaultLng,
  },
  address
}

或者您可以通过附加“!”来使用打字稿非空断言运算符值名称(仅当您确定该值不能为空或未定义时才使用此)

const values = {
  coords: {
    lat: res.geometry.location.lat()!,
    lng: res.geometry.location.lng()!,
  },
  address
}

0
投票

必须验证物体是否存在,其属性或价值

      if (place.geometry && place.geometry.location) {
        const lat = place.geometry.location.lat();
        const lng = place.geometry.location.lng();
        setCoordinates({ lat, lng });
      }

Espero ter ajudado;)

© www.soinside.com 2019 - 2024. All rights reserved.