在类中声明打字稿类型

时间:2019-06-03 23:45:13

标签: typescript

我有一个类,它具有一些基于传递给该类的泛型的非常复杂的类型。我在一些地方使用了相同的类型,并且试图找出如何使它们可重用:

class Foo<T> {
  method(): SomeComplicateType<T> {}
  method2(): SomeComplicateType<T> {}
}

我唯一能想到的就是这个,但是它允许用户覆盖我不想要的类型:

class Foo<T, U=SomeComplicatedType<T>> {
  method(): U {}
  method2(): U {}
}

2 个答案:

答案 0 :(得分:0)

TypeScript不允许在两个范围之间创建类型:

class A<Scope1> {
  x():Scope2;
}

您的解决方案

您找到的是一种在Scope1中将其创建为链的方法。

想法

我个人会咬住子弹,而不要尝试创建新的类型。我更喜欢露骨的工作。

答案 1 :(得分:0)

对于这个明显的建议表示抱歉,但您可以使用别名:

type NiceName<T> = SomeComplicateType<T>

class Foo<T> {
  method(): NiceName<T> {}
  method2(): NiceName<T> {}
}