GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Only infer 'never' in function expressions and arrow functions by ahejlsberg · Pull Request #8767 · microsoft/TypeScript

Conversation

@ahejlsberg

@ahejlsberg Anders Hejlsberg (ahejlsberg) commented May 23, 2016

Copy link
Copy Markdown
Member

This PR modifies the type inference rules such that we only infer a function result of never in function expressions and arrow functions. For regular functions and methods, in cases where we would have inferred never we now instead infer void. This matches the behavior we had before the introduction of never and ensures better backwards compatibility. For example:

class Base {
    overrideMe() {
        throw new Error("You forgot to override me!");
    }
}

class Derived {
    overrideMe() {
        // Code that actually returns here
    }
}

The above pattern is reasonably common and was broken because a never returning method cannot be overridden by a void returning method.

This PR only affects return type inference. It has no impact on functions and methods that explicitly specify a return type.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Anders Hejlsberg (ahejlsberg) added 4 commits May 23, 2016 10:35
@ahejlsberg
Only infer 'never' return type in function expressions and lambdas
564378f
@ahejlsberg
Merge branch 'master' into neverTypeInference
975e6de
@ahejlsberg
Add tests
b8e9ecf
@ahejlsberg
Accept new baselines
10d331e
@msftclas Microsoft Contribution License Agreements (msftclas) added the cla-not-required label May 23, 2016
@mhegazy

Mohamed Hegazy (mhegazy) commented May 23, 2016

Copy link
Copy Markdown
Contributor

👍

basarat reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ahejlsberg
Anders Hejlsberg (ahejlsberg) merged commit 74e2154 into master May 23, 2016
@ahejlsberg
Anders Hejlsberg (ahejlsberg) deleted the neverTypeInference branch May 23, 2016 22:40
@ahejlsberg Anders Hejlsberg (ahejlsberg) mentioned this pull request May 23, 2016
Add 'never' type #8652
Merged
@ahejlsberg Anders Hejlsberg (ahejlsberg) mentioned this pull request Jun 19, 2017
Function that always throws is not inferred as having never return type #16608
Closed
@DanielRosenwasser Daniel Rosenwasser (DanielRosenwasser) mentioned this pull request Jun 30, 2017
Can't implement interface by throwing error #16874
Closed
@mhegazy Mohamed Hegazy (mhegazy) mentioned this pull request Nov 20, 2017
Incompatible type for ES6 Proxy set handler using ES6 shorthand syntax #11445
Closed
@microsoft Microsoft (microsoft) locked and limited conversation to collaborators Jun 19, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@ahejlsberg @mhegazy @msftclas
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.