代码之家  ›  专栏  ›  技术社区  ›  None

在类中声明类型脚本类型

  •  1
  • None  · 技术社区  · 7 年前

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

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

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

    class Foo<T, U=SomeComplicatedType<T>> {
      method(): U {}
      method2(): U {}
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Paleo    7 年前

    很抱歉提出这个明显的建议,但您可以使用别名:

    type NiceName<T> = SomeComplicateType<T>
    
    class Foo<T> {
      method(): NiceName<T> {}
      method2(): NiceName<T> {}
    }
    
        2
  •  0
  •   basarat    7 年前

    TypeScript不允许在两个作用域之间创建类型:

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

    你的解决方案

    你所发现的是一种将其创建为一条链的方法 Scope1 .

    思想

    就我个人而言,我会咬紧牙关,不尝试创造一种新的类型。只要可能,我更喜欢明确的工作。

    推荐文章