我有一个类,它具有一些基于传递给该类的泛型的非常复杂的类型。我在一些地方使用了相同的类型,并且试图找出如何使它们可重用:
class Foo<T> {
method(): SomeComplicateType<T> {}
method2(): SomeComplicateType<T> {}
}
我唯一能想到的就是这个,但是它允许用户覆盖我不想要的类型:
class Foo<T, U=SomeComplicatedType<T>> {
method(): U {}
method2(): U {}
}
答案 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> {}
}