#111·ts-reset

Array#includes overload doesn't work on arrays over generic types (`T[]`)

Author: pavadeliCreated Mar 9, 2023Updated Apr 1, 2026
Labelsbugneeds-triage

While this works (no type error):

typescript
const arr: ('a' | 'b')[] = [];
arr.includes('some string');

This doesn't seem to extend to arrays that are defined in terms of a type parameter, e.g.:

typescript
function someFn<T extends string>() {
    const arr: T[] = [];
    arr.includes('some string');
    //           ^^^^^^^^^^^^^ Argument of type '"some string"' is not assignable to parameter of type 'T | (WidenLiteral<T> & {})'
}

Playground link: https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAcgAIwjAhgGwLQwJ5gCmAzgMZTBgwD0Mx2UJhMCA3AFDsBmArgHakYwCHzgwAFsGIB1aAGtiAeS4BhCDyjFCACgCUcAN7s4JuKRHF4EqbKgKAXHG0J0COAB9EAIwS6A2gC6cAC8cIEcpmKSMvLEAHTAApg8ACYkzsQQIIRwlhR8AOa+HAC+nLwCQiJwYFAQXpiEIACCADwAKnCEAB4whHwpxIiuHt4IAHx6hsam5nyWUVIAIhAkfDCO7YEhYQERptbEK2swCUmp6QiZ2bkw+UW6peX8gsKitfWNIABCHV29-UGt3uk30RkicwWh2OxHWm22oXCMxM0NWsNOiVIyTSxAyWRyeUSDyeQA