打字稿是否有一种机制允许我在下面的T
中查询f<T>()
的类型名称/属性? f()
不需要T的实例来完成其工作,只需要有关T&#39的类型名称和形状的信息。
给出类似的东西:
interface Foo {
bar:string
}
function f<T>() {
// know about T here?
}
var x = f<Foo>()
假设没有,是否有一种支持的方式(宏,预处理器,编译器插件等?)来生成代码以使其可见?
对于后台,我想要构建的是一个通用数据访问层,它从SQL数据库中提取数据,其中要检索的表名和列分别对应于类型名称和属性。
例如,get<User>(userid:number)
可以粗略地创建SELECT name FROM User WHERE id = userid
之类的查询,前提是User
定义了name
属性。
答案 0 :(得分:0)
有两件事需要考虑......
实施例
interface IBaseDataStructure {
id: number;
createDate: Date;
[string]: any;
}
function insert<T extends IBaseDataStructure> (dataToSave: T) {
// knows that dataToSave has id & createDate
dataToSave.id = 1;
dataToSave.createDate = new Date();
buildSQL(dataToSave);
}