As below codes showing, according to the error message, seems that type A is equivalent to an interface, but type A2 is a strict type kind type
type A<T> = {
[P in keyof { foo: any }]: number
}
interface B<T> extends A<T> { }
type A2<T> = {
[P in keyof T]: number
}
interface B2<T> extends A2<T> {} // An interface may only extend a class or another interface.
As below codes showing, according to the error message, seems that
type Ais equivalent to aninterface, buttype A2is a stricttypekind type