How can I deal with conditional exceptions in typescript?

  Kiến thức lập trình

I have this typescript code:

const loadSomething = () => {
  try {
    return {
      foo: 'bar'
    }
  } catch (e) {
    console.error(e)
    throw e
  }
}

const main = () => {
  const result = loadSomething()
  console.log(result.foo)
}

This code is totally fine and does not produce any typescript issues. But now I want to outsource the code which I use for handling the exception. So I change it like this:

const logError = (e: any, rethrow: boolean) => {
  console.error(e)
  if (rethrow) {
    throw e
  }
}

const loadSomething = () => {
  try {
    return {
      foo: 'bar'
    }
  } catch (e) {
    logError(e, true)
  }
  return undefined
}

const main = () => {
  const result = loadSomething()
  console.log(result.foo)
}

I need to conditionally throw that exception, but in that case typescript gives me the error that result is possibly undefined. But this can never occur, since I rethrow the exception in the catch block. Is there a way I can tell typescript that logError throws an exception if rethrow is true, so that the typescript issues are gone?

Theme wordpress giá rẻ Theme wordpress giá rẻ Thiết kế website

LEAVE A COMMENT