假设我有界面:
interface IAddress {
addressProperty: any;
}
有没有办法写类似这样的界面:
interface ILoadable<T> {
loading: boolean;
}
所以我可以像这样使用它:
interface IStateSlice {
address: ILoadable<IAddress>;
}
其中的地址将通过IAddress进行ILoadable扩展。
答案 0 :(得分:2)
我认为您可以使用intersection types:
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 { }