Skip to content

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

Closed
@Asaf-S

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