我想创建一个通用的TypeScript类,用于渲染(作为HTML列表)实现特定TypeScript接口的对象数组.
例如
class GenericListRenderer<T> {
items: T[];
constructor(listItems: T[], className?: string){
this.items = listItems;
...
}
private getPropertyNames(): string[]{
// What is the best way to access all property names defined in
// TypeScript interface 'T' that was used in this generic?
...
}
render(){
var propNames: string[] = this.getPropertyNames();
// render list with each item containing set of all
// key(prop name)/value pairs defined by interface 'T'
...
}
}
Run Code Online (Sandbox Code Playgroud)
问:获取指定()TypeScript接口中定义的所有属性名称的"编译时"列表的最佳方法是什么?
与C++模板一样,我相信TypeScript可以在"编译时"解析这些泛型,当TypeScript类型信息(如提供给用于实例化特定对象的泛型的接口)随时可用时.
由于可能提供了所有必需的类型信息,我只是好奇是否有可用于访问此信息的TypeScript扩展/工具,以及对'vanilla'Javascript对象的过度运行时过滤 - 由于模糊的继承问题,这可能会有问题(例如,如果运行时,泛型,Javascript(obj.hasOwnProperty(prop))用于过滤属性,则可能会过滤掉所需的TypeScript继承的接口属性).
这种有用的属性内省潜力可以在"编译时"期间使用TypeScript的超类型元数据进行明确解析,而不是在所有这些类型信息被丢弃时尝试在翻译的Javascript中解析此信息.
如果存在标准(TypeScript)方法,我讨厌使用可能不完美的Javascript hack'重新发明轮子'.
真诚地:初学者TypeScript …