microsoft / microsoft/TypeScript
should allow type predicates when `isType(badInput as any)`
Open
Nobody has claimed this yet.
Awaiting More Feedback
Suggestion
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.4k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
Bug Report
🔎 Search Terms
🕗 Version & Regression Information
- This is a crash
- This changed between versions ______ and _______
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
- I was unable to test this on prior versions because _______
⏯ Playground Link
💻 Code
function isArray(input: any[] | number): input is any[]
{
return true
}
let badInput: string;
if (isArray(badInput as any))
{
badInput.join('')
}
// @ts-ignore
if (isArray(badInput))
{
badInput.join('')
}
🙁 Actual behavior

🙂 Expected behavior
badInput should know as array when use as any
if (isArray(badInput as any))
{
badInput.join('')
}
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 linked TypeScript Playground and reproduce the difference between isArray(badInput as any) and the @ts-ignore case. Read the type-checking behavior around user-defined type predicates and compare the inferred type inside each branch. Done means the casted call narrows badInput to an array without suppressing the diagnostic.
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