如何使用异步功能扩展接口?

时间:2018-08-23 15:11:37

标签: typescript

用TypeScript中的async function扩展接口可能是个好方法?

async function添加一个属性,就像充当常量as in this example一样,可能会有用。

但是,我无法以将AugmentedExample界面应用于多个不同的async function的方式来扩展此方法。

In this example,接口已提供泛型,但是TypeScript会引发异常:An interface may only extend a class or another interface.这是可以理解的,因为TypeScript不能确定泛型是否可以用于扩展接口。但是,我还无法找到一种方法来约束泛型,以便TypeScript可以确定它可以用于扩展接口。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用交集类型代替接口扩展名:

type Augmentation = 'Augmentation';

type AugmentedExample <GenericOriginalExample> = GenericOriginalExample &
{
    AUGMENTATION: Augmentation;
};

const AUGMENTATION = 'Augmentation';

async function example(a: number)
{
    return true;
};

const augmentedExecutor = example as AugmentedExample <typeof example>;
augmentedExecutor.AUGMENTATION = AUGMENTATION;