【问题标题】:Typescript: Extend interface with generic interfaceTypescript:使用通用接口扩展接口
【发布时间】:2018-11-06 07:17:18
【问题描述】:

假设我有接口:

interface IAddress {
    addressProperty: any;
}

有没有办法写出类似这样的界面:

interface ILoadable<T> {
    loading: boolean;
}

所以我可以像这样使用它:

interface IStateSlice {
    address: ILoadable<IAddress>;
}

地址将通过 IAddress 进行 ILoadable 扩展。

【问题讨论】:

    标签: typescript generics interface


    【解决方案1】:

    我觉得你可以用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 { }
    

    【讨论】:

    • 太棒了!谢谢!我从没想过你可以这样使用&amp; :D
    • 你也可以用逗号分隔多个工具。此外,您可以以相同的方式扩展多个接口,因此您可以创建一个扩展两个交错的类
    • @Kindzoku,然后您可以将此答案标记为已选择)
    猜你喜欢
    • 2020-06-09
    • 2020-04-09
    • 2018-07-26
    • 2019-06-08
    • 1970-01-01
    • 2017-03-04
    • 2020-10-30
    • 2016-07-06
    相关资源
    最近更新 更多