获取未实例化的泛型的键和值类型

时间:2020-11-03 19:22:58

标签: typescript typescript-generics

我正在创建一个辅助方法来为测试生成数据。我想要的是能够获取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(),这似乎是我要实例化对象的原因,看来我无法传递类型。

1 个答案:

答案 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;
}