Bug Report
🕗 Version & Regression Information
Tried in 4.4.4 and Nightly version
⏯ Playground Link
https://www.typescriptlang.org/play?#code/KYDwDg9gTgLgBAYwgOwM7wJaoEIQgG2AENk4BeOACgDcj8BXYALjnuQGtkIB3ZASha0GwOFjgAjPIRLkAfHBgBPMMAgAzOEMbkyFAOSSCxZHoDcAKHNI08eqmABBACZEwMYFHJVUi5AgAiwCrITsB+GMCoLOhQGMgA5gDaALoANHBEPn6BwaHhkdEwsQkpcAA+ElLGfHJUoblhCBFRcDFxSckCcImG0sjpvcbJtQDe5nATiCjorPYOWQheWLhGJJSZvgFBYXlNkXzjk0cA-BkLOTuNzYdHEywb2dshV5EAdFDATvQIwJSUYB9qOl6jUyPIAcBqOUKvVLvlUK84ggGKFUJQQek1HR7AcblMbLMRBQ7I4FtDWpsLs94e9Pt9fv9AcCgqDwYDybDqXsEUiUZF0SzMdjgLijh8YPQoKREiT0iT5ptkuYAL6WKzTWxzFxuDwAJi8lHOT12zUKxQ66QeWwa8LN7VKFUGJFZdWNLxabRKnRYPSqJAGfuQwzBcDGR2sM3lZIoy0D6yNNu5B1uk1OVqpJsieKO9wTcO5tK+Pz+EKBcBBtVLHLdNN59FRArAfCF+BxlnDGsJXjzXOahfpJaZ5ZZlfZZRhNYLdYbGLgWNbIvJUc27cm4sl0tlhIVfiVqqAA
💻 Code
exportconstisBoolean=(value: unknown): value is boolean=>typeofvalue==='boolean';constuseAdapter=(syncDependencies: string[],asyncDependencies: string[]|boolean)=>(dependencies: string[]): [boolean,boolean]=>{constuseAsync=isBoolean(asyncDependencies)
? asyncDependencies
: asyncDependencies.reduce((prev,dep)=>prev||dependencies.includes(dep),false)constuse=useAsync||syncDependencies.reduce((prev,dep)=>prev||dependencies.includes(dep),false)return[use,useAsync]}🙁 Actual behavior
TypeScript thinks that syncDependencies.reduce() returns a string. If i remove useAsync || in front of the reduce statement or place it after the reduce statement || useAsync it is detected as a boolean
🙂 Expected behavior
The reduce statement should return a value of type boolean because the value actually is a boolean
Bug Report
🕗 Version & Regression Information
Tried in 4.4.4 and Nightly version
⏯ Playground Link
https://www.typescriptlang.org/play?#code/KYDwDg9gTgLgBAYwgOwM7wJaoEIQgG2AENk4BeOACgDcj8BXYALjnuQGtkIB3ZASha0GwOFjgAjPIRLkAfHBgBPMMAgAzOEMbkyFAOSSCxZHoDcAKHNI08eqmABBACZEwMYFHJVUi5AgAiwCrITsB+GMCoLOhQGMgA5gDaALoANHBEPn6BwaHhkdEwsQkpcAA+ElLGfHJUoblhCBFRcDFxSckCcImG0sjpvcbJtQDe5nATiCjorPYOWQheWLhGJJSZvgFBYXlNkXzjk0cA-BkLOTuNzYdHEywb2dshV5EAdFDATvQIwJSUYB9qOl6jUyPIAcBqOUKvVLvlUK84ggGKFUJQQek1HR7AcblMbLMRBQ7I4FtDWpsLs94e9Pt9fv9AcCgqDwYDybDqXsEUiUZF0SzMdjgLijh8YPQoKREiT0iT5ptkuYAL6WKzTWxzFxuDwAJi8lHOT12zUKxQ66QeWwa8LN7VKFUGJFZdWNLxabRKnRYPSqJAGfuQwzBcDGR2sM3lZIoy0D6yNNu5B1uk1OVqpJsieKO9wTcO5tK+Pz+EKBcBBtVLHLdNN59FRArAfCF+BxlnDGsJXjzXOahfpJaZ5ZZlfZZRhNYLdYbGLgWNbIvJUc27cm4sl0tlhIVfiVqqAA
💻 Code
🙁 Actual behavior
TypeScript thinks that
syncDependencies.reduce()returns astring. If i removeuseAsync ||in front of the reduce statement or place it after the reduce statement|| useAsyncit is detected as aboolean🙂 Expected behavior
The reduce statement should return a value of type
booleanbecause the value actually is aboolean