2013-07-09 3 views
0

Учитывая следующий код:Могу ли я использовать typescript.js для выполнения синтаксического анализа языка?

class Foo 
{ 
    Bar(name: string): void 
    { 
     var x = name; 
    } 

    FooBar(): void 
    { 
    } 
} 

Использование typescript.js или что-то, можно перечислить все методы класса Foo? Как?

Если возможно, я хотел бы сделать это, не компилируя и не запуская Javascript. Если нет никакого способа, я попытать счастья с некоторым регулярным выражением ...

+0

У меня была версия машинописной игровой площадки для 0.8: http://basarat.github.io/TypeScriptEditor/ вы можете использовать источник: https://github.com/basarat/TypeScriptEditor – basarat

+0

@BASarat Можете ли вы уточнить ? Какой файл выполняет то, что я пытаюсь сделать? – BrunoLM

+0

Помните, что TypeScript является надмножеством JavaScript, поэтому это будет чрезвычайно сложно (например: посмотрите, насколько сложно Google сделать это в компиляторе Closure). Однако, если вы хотите просто подумать о классах TypeScript, вы можете взломать компилятор TypeScript, использовать для парсера TS для сбора всех мест, где определен ваш класс, а затем объединить список методов. Возможно, это проще, чем чистый JavaScript, но он не найдет места, где вы добавили новые методы в классы по-разному. –

ответ

1

Вам не нужно typescript.js или что-нибудь подобное, просто использовать getOwnPropertyNames, такие как

var classMemberNames = Object.getOwnPropertyNames(Foo.prototype); 

Методы класса машинопись появляются на свойство prototype функции-конструктора, представляющей класс.

+0

Это требует компиляции и работы ... Я бы очень хотел этого избежать. – BrunoLM

+0

@BrunoLM Обычно вы компилируете + бегать, чтобы делать отражение. Не могли бы вы привести пример на другом языке (C#, Java) того, что вы пытаетесь сделать? – zcrar70

+0

@ zcrar70 Мне нужно разбирать язык ... Мне нужно знать методы, я хотел бы знать их, не компилируя и не запуская. Если я не буду прибегать к регулярному выражению. – BrunoLM

Смежные вопросы