Есть ли способ отличить класс (а не его экземпляр!) от функции в TypeScript во время выполнения.
Обычно классы в typescript транспилируются в функции javascript, и во время выполнения я не смог найти хороший способ проверить, является ли идентификатор функцией или типом класса!
Например:
function func1() {
}
class class1 {
}
// ugly hack
(<any>class1.prototype).isclass = true;
// ugly hack test
function is_class(clazz:any) {
return (
clazz
&& clazz.prototype
&& (<any>clazz.prototype).isclass === true
);
}
console.log(typeof(func1) === 'function'); // returns true !!
console.log(typeof(class1) === 'function'); // returns true !!
console.log(is_class(func1)); // returns false :)
console.log(is_class(class1)); // returns true :)
Любые идеи для лучшего решения? Спасибо.