Angenommen, ich eine Klasse mit einer Factory-Methode haben:Closure Compiler Typisierung: Siehe Funktion (Factory-Methode)
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);
}
}
Ich will Foo
‚s Factory-Methode in einer anderen Klasse der Abhängigkeits zu injizieren, wie:
/**
* @param {{
* createFoo: !function(!Object): !Foo
* }} options
*/
Das Problem: Closure Compiler sagt, dies stimmt nicht mit dem formalen Parameter überein.
found : {
createFoo: function ({a: number, b: number): Foo,
}
required: {
createFoo: function (Object): Foo,
}
Natürlich kann ich die Art Signatur und harten Code in der Aufzeichnung neu zu schreiben, aber ich mag wirklich Foo.create
so beziehen gibt es keine Notwendigkeit, die gesamte Codebasis mir einen neuen param jedes Mal zu aktualisieren, hinzuzufügen, um die Optionen zu widersprechen.
Wie kann ich das für CC tun?
Oder verwenden '@ Record' –