I want to force all classes derived from my base class to have to implement a static variable, without forcing every derived class to implement a protocol.

Here's a sample:

```
enum SomeEnum {
    case BaseType
    case DerivedType
}

protocol Typed {
    static var classType: SomeEnum { get }
}

class BaseClass : Typed {
    static var classType: SomeEnum = SomeEnum.BaseType
}

class DerivedClass : BaseClass {
    // ERROR: Cannot override with a stored property 'classType'
    static var classType: SomeEnum = SomeEnum.DerivedType
}

```

The code below here works but requires the implementor of every class derived from `BaseClass` to remember to also derived from the protocol `Typed`, and it also means that `BaseClass` itself cannot define `classType`:

```
class BaseClass {
}

class DerivedClass : BaseClass, Typed {
    static var classType: SomeEnum = SomeEnum.DerivedType
}

```

This example below doesn't work either, I get a different error:

```
class BaseClass {
    static var classType: SomeEnum {
        get { return SomeEnum.BaseType }
    }
}

class DerivedClass : BaseClass {
    // ERROR: Class var overrides 'final' class var
    static var classType: SomeEnum {
        get { return SomeEnum.DerivedType }
    }
}

```