3
如何使用Typescript 1.4.0获取对象的属性类型。如何通过使用Typescript语言服务获取属性信息
我正在寻找类似于C#的东西,它有可能查找对象的属性。
var properties = typeof(T).GetProperties();
foreach(var property in properties){}
我至今是:
var ls = ts.createLanguageService(host, ts.createDocumentRegistry())
var nav = ls.getNavigationBarItems(host.fileName);
给出的示例接口:
interface Example {
firstname: string;
lastname: string;
age: string;
}
打字稿语言服务返回结果:
{
"NavigationBarItems":[
{
"text":"Example",
"kind":"interface",
"kindModifiers":"",
"spans":[
{
"start":0,
"length":83
}
],
"childItems":[
{
"text":"age",
"kind":"property",
"kindModifiers":"",
"spans":[
{
"start":69,
"length":12
}
],
"childItems":[
],
"indent":0,
"bolded":false,
"grayed":false
},
{
"text":"firstname",
"kind":"property",
"kindModifiers":"",
"spans":[
{
"start":24,
"length":18
}
],
"childItems":[
],
"indent":0,
"bolded":false,
"grayed":false
},
{
"text":"lastname",
"kind":"property",
"kindModifiers":"",
"spans":[
{
"start":47,
"length":17
}
],
"childItems":[
],
"indent":0,
"bolded":false,
"grayed":false
}
],
"indent":0,
"bolded":false,
"grayed":false
}
]
}
信息我缺少的是类型(str数字,地图<>,任何),并且如果它是数组或对象,例如
"text":"lastname",
"kind":"property",
"type":"string", //string,number,Map<>,any
任何想法如何实现这一目标?
非常感谢您的帮助。
https://atom.io/packages/atom-typescript这些工具提示只是很好,使用烤宽面条服务“getQuickInfo” – basarat 2015-02-24 20:54:05
此外,你可以从语言服务方法'getProgram' – basarat 2015-02-24 20:55:04
得到程序你是绝对正确的。我可以使用getQuickInfoAtPosition来获取我需要的信息,但是在查找其位置上的每个项目时有点不舒服。感谢关于'getProgram'的注释,你知道当我想使用'getProgram'时是否需要实现编译器主机吗?还是我可以留在languageservicehost? – Karl2011 2015-02-24 21:52:12