【问题标题】:Why does my Sequelize / Typescript function error with "Two different types with this name exist, but they are unrelated."?为什么我的 Sequelize / Typescript 函数错误“存在具有此名称的两种不同类型,但它们不相关。”?
【发布时间】:2019-02-21 10:22:39
【问题描述】:

我正在使用sequelize-typescript,我的代码是:

import Promise from "bluebird";
import { IncomingCall } from '../models/IncomingCall';
export function incoming(requestBody: object): Promise<IncomingCall> {
  return IncomingCall.create({
    CallSid: requestBody.CallSid
  });
}

但我得到的错误是:

[ts]
Type 'Bluebird<import("/src/models/IncomingCall").IncomingCall>' is not assignable to type 'Bluebird<import("/src/models/IncomingCall").IncomingCall>'. Two different types with this name exist, but they are unrelated.
  Types of property 'then' are incompatible.

我的IncomingCall 是:

import { Model, Column, Table, DataType } from "sequelize-typescript";

@Table
export class IncomingCall extends Model<IncomingCall> {

  @Column
  CallSid: string;

  @Column
  AccountSid: string;

  @Column(DataType.JSON)
  rawData: string;

}

如何让它正常工作?

【问题讨论】:

    标签: typescript sequelize.js sequelize-typescript


    【解决方案1】:

    export class IncomingCall extends Model&lt;IncomingCall&gt; 似乎不正确,因为您为类型参数分配了在定义时不存在的类型。我想像export class IncomingCall extends Model&lt;{ Callsid: string; AccountsId: string; rawData: string; }&gt; 这样的东西更好,或者你可以在另一个界面中定义你的模型的形状。

    【讨论】:

    • 我也是这么想的,但显然,这就是用这个包定义模型的方法:github.com/RobinBuschmann/sequelize-typescript#model-definition
    • 所以你的项目中有不止一个 promise 的定义? bluebird 中的一个和 lib.es5 中的一个
    • lib.es5.core。您可以检查编译器选项中的 traceResolution 标志
    【解决方案2】:

    简单的解决方法是更改​​为:

    export function incoming(requestBody: object): Promise<any> {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多