Closed
Description
TypeScript Version: 3.9.3
Search Terms:
cannot be used to index type
Code
2536
// A *self-contained* demonstration of the problem follows...
// works in 3.8, fails in 3.9
// Is this a bug in 3.9?
// Nexus (nexusjs.org) depended on this functionality
type Get1<
A extends any,
B extends any,
C extends 'filtering' | 'ordering'
> = A extends keyof Stuff
? B extends keyof Stuff[A]
? Stuff[A][B][C] // error here
: never
: never;
interface Stuff {
// [k:string]: any // <-- Putting this here fixes Get1 in TS 3.9
Blog: {
// [k:string]: any // <-- Putting this here fixes Get1 in TS 3.9
posts: {
filtering: 'a',
ordering: 'b'
}
}
}
Expected behavior:
TS 3.9 supports the same type logic as in 3.8 (see playground repro)
Actual behavior:
Breaks in 3.9 (our context: graphql-nexus/nexus#859)
Playground Link: