我正在创建一个辅助方法来为测试生成数据。我想要的是能够获取T的键和类型的值,以便可以使用它来创建模拟值。
export class GenericMockFactory<T extends { id: number }>> {
makeMockModel(): T {
return {
//Mocked Data Here
}
}
}
所以我们说T是
Model {
id: number
name: string
country: string
}
我将模拟工厂作为
const mockFactory = GenericMockFactory<Model>
我希望返回的mockFactory.makeMockModel()
是Model
对象,如果属性的类型是字符串,则返回值设置为`any_${key}`
,如果返回值是1
数。对于上面的示例:
{
id: 1
name: 'any_name'
country: 'any_country'
}
我尝试过的事情:
Object.entries(T).forEach()
,这似乎是我要实例化对象的原因,看来我无法传递类型。
答案 0 :(得分:0)
这可以帮助:https://stackoverflow.com/a/43572554/8350634
function mockObject(obj) {
const newObj = {};
const keys = Object.keys(obj);
for(const key of keys) {
if(typeof newObj[key] == "string") {
newObj[key] = 'any' + key;
} else {
newObj[key] = 1;
}
}
return newObj;
}