Typescript无法识别类的静态方法

iyfamqjs  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(168)

我有一个typescript函数,它有一个名为“Model”的泛型类。这个类有一个静态方法“build”。Typescript无法识别该类的静态方法,并向我显示了这个错误。编译后的javasript可以正常工作,没有错误:

export function dataToInstance(model: Model, data: any) {
    if (!data) {
        return data;
    }

    const include = generateIncludeRecurse(model);
    const instance = model.build(data, { isNewRecord: false, raw: false, include });
    restoreTimestamps(data, instance);
    return instance;
}

错误:

如何让typescript接受静态方法?我已经试过“typeof”,但是typescript抛出错误,因为model是抽象类。

hgc7kmma

hgc7kmma1#

你似乎是第一次接触typescript。你的函数说它想要接收一个模型,而你想在函数体中对该模型做XYZ。通过说模型的类型是Model,我们实际上是告诉typescript每次调用这个函数时,它可以期望model参数具有Model类型中指定的所有属性和方法。
调查Model类型。它看起来像一个接受两个参数的泛型。没有看到Model,就不可能肯定地说。类型参数可能负责将Model的基与其他属性/方法相交。
这可能不是你的代码,但是类似Model<{ build: BuildFn }>的代码可以让typescript知道你正在使用的模型有一个build属性。
希望这能在某种程度上帮助你。

相关问题