es6导入。有什么方法可以在泛型中将“命名空间”用作“类”?

时间:2018-09-15 12:15:14

标签: typescript generics

// `./module.ts`
export class User
{
    name: string
    surname: string
    age: number
}

es6导入

import * as module from "./module"生成namespace module,这很糟糕。

  1. 呼叫typeof module阻止class generics的{​​{1}}:

      

    类型module不可分配给类型User的参数

  2. typeof User无法通过另一个modulenamespace module {}调用来扩展。

问:

  • 有什么方法可以在泛型中将interface module {}用作namespace
  • 有什么方法可以在没有手工关联的情况下将模块中的多个类导出为类类型?

class

查看typescriptlang.org/play或下一步阅读


namespace _0.A - real behavior
namespace _0.B - expected behavior
namespace _1.extend - extend expected behavior

1 个答案:

答案 0 :(得分:-1)

解决方案

type Convert<T> = {
    [k in keyof T]: T[k] extends { new(): infer R }
    ? R
    : T[k]
}

完整的示例代码,在问题中,请看typescriptlang.org/play