【问题标题】:TypeScript: Type of the current class as a type variableTypeScript:当前类的类型作为类型变量
【发布时间】:2015-01-20 14:04:10
【问题描述】:

我想在 TypeScript 中声明一个返回当前实例类型的函数,例如在返回 this 的流畅 API 中。

“这种类型”是否有类型变量? (我宁愿不用X<T extends X<T>>这种丑陋的Java方式。)

【问题讨论】:

  • 我不确定你能做到。也许该函数可以返回 并且在 return 语句中您可以返回所需的对象,然后将其转换为使用该函数的代码?有点丑,我知道。
  • 在执行此操作之前,请考虑它如何破坏抽象:您要求一个接口来宣传它返回的特定实现,而不是实现所遵循的协定(/接口)。这种使用会很危险,尽管我认为在某些合法的情况下可以派上用场。

标签: generics typescript


【解决方案1】:

在 TypeScript 中还没有办法做到这一点。请参阅 issue https://github.com/Microsoft/TypeScript/issues/285 进行投票/讨论。

【讨论】:

    【解决方案2】:

    现在可以实现流畅的接口:

    class FluentInterface {
        aMethod(): this {
            return this;
        }
    }
    

    【讨论】:

      【解决方案3】:

      我知道这不是您想要的,但对于我的用例,this workaround 已经足够了:

      export class Component{
        init(config?: { [field in keyof this]?: this[field] }) {
          Object.assign(this, config)
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-19
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        • 2018-04-22
        • 1970-01-01
        • 2015-03-26
        相关资源
        最近更新 更多