While checking methods is more important for proper design, there really isn't much of a reason we couldn't support checking required attribute names and types.
Ex)
@interface MyInterface begin
x::Int
func(self::MyInterface)
end
Then we could just use fieldnames(<ImpType>) and fieldtypes(<ImpType>, <fieldname>) when implements gets called.
While checking methods is more important for proper design, there really isn't much of a reason we couldn't support checking required attribute names and types.
Ex)
Then we could just use
fieldnames(<ImpType>)
andfieldtypes(<ImpType>, <fieldname>)
whenimplements
gets called.