Как указать тип для функции, которая возвращает новый объект класса - PullRequest
0 голосов
/ 15 сентября 2011

Я использую компилятор Google Closure, чтобы проверить мой код JavaScript. У меня есть функция, которая создает, а затем возвращает новый «класс». То есть функция, которая возвращает объект, к которому может быть применено новое, и возвращает объект «экземпляра» этого класса. Например.,

var newclass = createFactory('Car');
var acar = new newclass();
acar.show();     // executes newclass.prototype.show()
newclass.staticmethod();   // executes newclass.staticmethod()

Шоу и статические методы были созданы методом createFactory.

У меня проблемы с определением типа newclass для компилятора Google Closure, так что он распознает newclass как конструктор, имеющий метод класса staticmethod и метод экземпляра show.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 26 сентября 2011

Предполагая, что сгенерированная фабрика имеет некоторый общий базовый класс или интерфейс (я буду использовать KnownType).Это должно сработать:

/** @type {function(new:KnownType)} */
var newClass = createFactory();

Это говорит о том, что "newClass" - это функция, которая вызывается с использованием "new", которая возвращает экземпляр KnownType, в этом случае она объявлена ​​как не принимающая никаких параметровно вы можете.

CreateFactory может объявить этот тип как тип возвращаемого значения или в любом месте, где вы обычно используете тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...