typescript kotlin在打字稿中的风格代表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript kotlin在打字稿中的风格代表相关的知识,希望对你有一定的参考价值。


function delegateTo(prop: string) {
  const { __proto__ } = this
  Object.setPrototypeOf(this, 
    new Proxy({}, {
      get: (target, name) => {
        target = this[prop]
        if (name === prop) return target
        if (name in __proto__) return __proto__[name]
        return target ? target[name] : undefined
      }
    })
  )
}

export type Constructor<T=any> = new(...argv) => T

export function Decorator<T=any>(prop: string) {
  return <any> function() {
    delegateTo.call(this, prop)
  } as Constructor<T>
}

function mixin<T>(...mixins: Array<Constructor>) {
  const prototype = mixins.reduce(
    (props, { prototype: __proto__ }) => {
      let { prototype } = props
      if (prototype) props = prototype
      prototype = { __proto__ }
      for (const key in props) prototype[key] = props[key]
      return prototype
    }
  )
  return <any>
    Object.assign(
      function(...argv) {
        mixins.forEach(mixin => mixin.call(this, ...argv))
      },
      { prototype }
    ) as Constructor<T>
}

export function delegate<To, From={}>(prop: string) {
  return (Class: Constructor<From>) =>
    <any> class extends mixin(Class, Decorator(prop)) {
    } as Constructor<To & From>
}

class A {
  a() { console.log('a') }
}

@delegateTo<A>('aInst')
class B implements { aInst: A } {
  constructor(private aInst: A) {}
}

new B(new A).a()

以上是关于typescript kotlin在打字稿中的风格代表的主要内容,如果未能解决你的问题,请参考以下文章

typescript 打字稿中的导出示例

typescript 打字稿中的字符类

typescript 打字稿中的一些类

typescript 打字稿中的角度转换日期格式

打字稿中的多个构造函数

带有依赖注入和缩小的打字稿中的角服务