如何在Typescript中对通用类的通用参数设置约束?

时间:2018-07-30 16:49:18

标签: typescript generics

假设我有这样的界面:

interface Identity<TValue> {
  readonly value: TValue;
}

现在我要为其创建存储空间

class IdentityStorage<TIdentity> {

}

但是我想为TIdentity类型设置类型约束。我该怎么做?我已经尝试过这样的事情

class IdentityStorage<TIdentity extends Identity> {} 
class IdentityStorage<TIdentity<TValue> extends Identity<TValue>> {}

但是它们都不起作用。如何设置这种约束?

1 个答案:

答案 0 :(得分:3)

您可能要使用两个类型参数,如:

class IdentityStorage<TValue, TIdentity extends Identity<TValue>> {} 

这表示您想要的确切约束。如果您愿意放宽自己的约束条件,可以执行类似

的操作
class IdentityStorage<TIdentity extends Identity<any>> {}

也会起作用,但可能会允许您不需要的某些东西(取决于Identity<TValue>中的多少属性取决于TValue以及以何种方式……如上所述,其中只有一个属性输入TValue,这样就可以了。)

希望有帮助。祝你好运!