Предположим, у меня есть класс с фабричным методом:Закрытие компилятор типирование: Обратитесь к функции (метод фабрики)
export class Foo {
constructor(options) {
this.a = options.a;
this.b = options.b;
}
/**
* @param {{
* a: number,
* b: number
* }} options
* @return {!Foo}
*/
static create(options) {
return new Foo(options);
}
}
Я хочу зависимостей впрыснуть Foo
«s фабричный метод в другом классе, как:
/**
* @param {{
* createFoo: !function(!Object): !Foo
* }} options
*/
Проблема: Closure Compiler говорит, что это не соответствует формальному параметру.
found : {
createFoo: function ({a: number, b: number): Foo,
}
required: {
createFoo: function (Object): Foo,
}
Очевидно, что я могу переписать тип подписи и жесткий код в записи, но я действительно хочу обратиться к Foo.create
так что нет никакой необходимости обновления всего CodeBase каждый раз, когда я добавить новый параметров объекта варианты.
Как я могу это сделать для CC?
Или используйте '@ record' –