【发布时间】:2021-02-16 12:13:49
【问题描述】:
我正在创建一个辅助方法来为我们的测试生成数据。我想要的只是能够获取 T 的值的键和类型,以便我可以使用它来创建模拟值。
export class GenericMockFactory<T extends { id: number }>> {
makeMockModel(): T {
return {
//Mocked Data Here
}
}
}
假设 T 是
Model {
id: number
name: string
country: string
}
我有 mockFactory 作为
const mockFactory = GenericMockFactory<Model>
如果属性类型是字符串,我希望 mockFactory.makeMockModel() 的返回值设置为 Model 对象,如果属性类型是数字,则返回 1。对于上面的例子:
{
id: 1
name: 'any_name'
country: 'any_country'
}
我尝试过的:
Object.entries(T).forEach(),如果我实例化了对象,我会去,我似乎无法传递类型。
【问题讨论】:
-
这类似于this question。静态类型系统在将 TS 转换为 JS 时被删除,因此唯一的方法是让 JS “模式”对象代表 TS 类型。您可以手动完成,也可以使用自定义 TS 转换器以编程方式完成。
标签: typescript typescript-generics