Я думаю, вы можете использовать типы пересечений :
interface IAddress {
addressProperty: any;
}
interface ILoadable {
loading: boolean;
}
interface IStateSlice {
address: ILoadable & IAddress
}
и затем используйте его:
class StateSlice implements IStateSlice{
address = {
loading: false,
addressProperty: 'lol'
}
}
Вы также можете определить отдельный тип для этого:
type LoadableAddress = ILoadable & IAddress
interface IStateSlice {
address: LoadableAddress
}
или то же самое, используя расширение интерфейса
interface LoadableAddress extends ILoadable, IAddress { }