microsoft / microsoft/TypeScript
Type guards doesn't work with iterables for arrays
Open
Nobody has claimed this yet.
Needs Investigation
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: 3.7.x-dev.20200410
Search Terms:
Code
declare function f(a: any): a is any[];
declare const a: Iterable<number>;
f(a) && a;
Expected behavior:
Narrowed a's type is number[].
Actual behavior:
Narrowed a's type is any[].
Related Issues: #32497 #17002
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the TypeScript playground reproduction linked in the issue and compare the reported narrowing for an Iterable guarded by f. Trace the type-guard narrowing behavior for array predicates and verify that the narrowed type preserves the iterable's element type as described by the expected behavior.
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