microsoft / microsoft/TypeScript

strictPropertyInitialization should consider `return`

Open
#27,555 3 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Experience Enhancement Suggestion
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
132

Description

TypeScript Version: 3.2.0-dev.20181004

Code

class C {
    x: number;

    constructor(b: boolean) {
        if (b) {
            this.x = 3;
        } else {
            return new C(true);
        }
    }
}

Expected behavior:

No error.

Actual behavior:

src/a.ts:2:5 - error TS2564: Property 'x' has no initializer and is not definitely assigned in the constructor.

2     x: number;

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the TypeScript example and the strictPropertyInitialization diagnostic for property x. Trace the constructor control-flow analysis that handles return statements, then verify the example produces no TS2564 error when the return path creates a new C.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.