gpt4 book ai didi

javascript - 关闭编译器键入 : Refer to function (factory method)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:12 24 4
gpt4 key购买 nike

假设我有一个带有工厂方法的类:

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);
}
}

我想在另一个类中依赖注入(inject) Foo 的工厂方法,例如:

/**
* @param {{
* createFoo: !function(!Object): !Foo
* }} options
*/

问题:Closure 编译器说这与形式参数不匹配。

found   : {
createFoo: function ({a: number, b: number): Foo,
}

required: {
createFoo: function (Object): Foo,
}

显然我可以重写记录中的类型签名和硬代码,但我真的想引用 Foo.create 所以每次添加新参数时都不需要更新整个代码库到选项对象。

我如何为 CC 执行此操作?

最佳答案

一种方法是在 typedef 中写一次类型,然后在两个地方引用它。 (我没试过这个,但我认为它应该有用)

/** @typedef {function({a: number, b:number}): Foo} */
var FooCreator;

export class Foo {
...

/**
* @type {FooCreator}
*/
static create(options) {
return new Foo(options);
}
}

/**
* @param {{
* createFoo: FooCreator
* }} options
*/

关于javascript - 关闭编译器键入 : Refer to function (factory method),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com