TLDR: Why should I NOT the alias form `type ... = interface {...}` instead of the standard `type ... interface {...}` for interface declarations?
The extended question:
The normal type definition for an interface in go would be `type TypeName interface {...}`. This results in a new type, which is assignable to other types of the similar interfacce, such that this is valid:
```
type I1 interface{ Foo() }
type I2 interface{ Foo() }
var _ I1 = I2(nil)
```
But these are different types, such that any function with one of these in the signature can't be converted to a similar function with the other, such that this is NOT valid:
```
var _ func(I1) = (func(I2))(nil)
```
Declare the types as
aliases however, and the limitation dissapears:
```
type I1 interface{ Foo() }
type I2 interface{ Foo() }
var _ I1 = I2(nil) // still valid
var _ func(I1) = (func(I2))(nil) // now valid
```
A runnable example of the below using `http.ResponseWriter`:
My point being using aliases offers an advantage (more flexible assignment and interface implementation) and to my knowledge no meaningful drawback. So why not use it everywhere?