Skip to content

Arrow function don't see never as a return type, while normal functions do #55351

Description

@Asaf-S

🔎 Search Terms

"typescript function that throws", "typescript function that always throws"

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about 4.7 + 5.1

⏯ Playground Link

https://www.typescriptlang.org/play?ts=4.6.4#code/GYVwdgxgLglg9mABBBBnOAbApgUQE55x4CCYAJgCoAWhA7gPoCMAFFgUQLJaqoCGA5lgBciVFDwww-AJQiwWAG5tEAb0QB6dYgA8AWn2IAckQC2vDIlCRYCALAAoRE+RpMWAHRtCeVuzxceASxpAG4HZ0QoGjhaRHlY-G9fbwC+QVCHAF8HBxQwMURaPF4ABxK2ADFwaHgwJkQAXkRmdBMsADVePDkQEwAjNmlGgD5VcMQYYGbWjq6dRABWIZVxiLwsKBA8JBnOvDDHREzELAxULDHDiLz0bESiUkpohhYAA3u8Qt5USzhwMgAhK8ModsvZMgdcmgoC58m4Po9qHR6AAmRrNLycbhpYSicSSGRyRTKBqjNQaLR6AzEdixKw1OyHG5uTx+ZJYwLpA5OKJ0OJYBJszH+bFBEFgqH5GFFUrlPBVay1VHolpwNp7Hr9QYjVQUoxwGHmCwoMgXEq8KI-dabbaIXiIBTmEAeZoAdgADABmd3SVYTKaq9VzbSLZZ+tYbLY7NWzfZ+46nc6XCLXVx3PyI56o5jvPxfH7AP7kIEgiJgiEOIA

💻 Code

function consoleErrorAndThrow_1(errorMessage: string): never { // <--- Normal function
    console.error(errorMessage);
    throw new Error(errorMessage);
}

const wrapperFunction_1 = (someVar: number) => {
  if (someVar < 5) {
      return someVar;
  } else {
      consoleErrorAndThrow_1(`Error was found!`);
  }
};

const consoleErrorAndThrow_2 = (errorMessage: string): never => {  // <--- Arrow function
  console.error(errorMessage);
  throw new Error(errorMessage);
}

const wrapperFunction_2 = (someVar: number) => { // Not all code paths return a value. (7030)
    if (someVar < 5) {
        return someVar;
    } else {
        consoleErrorAndThrow_2(`Error was found!`);
    }
};

🙁 Actual behavior

Get error Not all code paths return a value. (7030)

🙂 Expected behavior

No error

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions