Javascript 解构可能返回未定义的函数的返回

Javascript 解构可能返回未定义的函数的返回,javascript,typescript,Javascript,Typescript,我有以下代码 App.tsx const handleKeyDown = ({key}: {key: string}) => { const [newDirection, nextWalkingState, newPosition] = handleDogMovement(key, dogObject, invalidPositionsTest); } export const handleDogMovement = (key: string, dogObject :

我有以下代码

App.tsx

  const handleKeyDown = ({key}: {key: string}) => {

    const [newDirection, nextWalkingState, newPosition] = handleDogMovement(key, dogObject, invalidPositionsTest);
  }

export const handleDogMovement = (key: string, dogObject : Tile, invalidPositions : Position[]) => {
  const newDirection = mapKeyDownToDirectionImpl[key.toLowerCase()];
  if (!newDirection) return;

  const {direction, walkingState, pos} = dogObject;
  const nextWalkingState = newDirection === direction ? walkingState! + 2 : 2;
  const {offsetX, offsetY} = mapDirectionToOffset[newDirection];
  const newPosition = {x: pos.x + offsetX, y: pos.y + offsetY}
  if (!isNewPositionValid(newPosition, invalidPositions)) return;
  return [newDirection, nextWalkingState, newPosition];
}

然而,handleDogMovement可能返回未定义的。我还能这样分解结果吗?

你不能;它会抛出一个错误。试试这个:

const[newDirection,nextWalkingState,newPosition]=handleDogMovement(键,dogObject,invalidPositionTest)| |[];
现在,如果函数返回
undefined
,那么变量将是
undefined
,但至少不会使脚本崩溃