Type parameter defaults can only use parameters that occur before them. Erroneous code example:
struct Foo<T = U, U = ()> { field1: T, field2: U, } // error: type parameters with a default cannot use forward declared // identifiers
Since type parameters are evaluated in-order, you may be able to fix this issue by doing:
struct Foo<U = (), T = U> { field1: T, field2: U, }
Please also verify that this wasn't because of a name-clash and rename the type parameter if so.