首页 > 解决方案 > Typescript Type 'XX' 不可分配给类型 import("/Volumes/D/test").XX'.ts(2322)

问题描述

我创建了代码,它将覆盖类的默认配置,但我收到奇怪的错误Type 'IConfig' is not assignable to type 'import("/Volumes/D/www/js/tsc_1/test").IConfig'.ts(2322)

我不能将相同的变量 TYPE 分配给另一个变量。请检查屏幕截图

export default interface IPlugin {
  setConfig<T>(config: T): T
}

export interface IConfig {
  port: number
}

const _config: IConfig = {
  port: 7001
}

class Server implements IPlugin {

  public config : IConfig
  constructor() {
    this.config = _config
  }

  setConfig<IConfig>(configNew: IConfig) {
    this.config = configNew
    // ERROR - Type 'IConfig' is not assignable to type 'import("/Volumes/D/www/js/tsc_1/test").IConfig'.ts(2322)

    return configNew
  }
}

在此处输入图像描述 在此处输入图像描述

标签: typescripttypescript-typingstypescript2.0typescript-generics

解决方案


我已经这样修好了。请注意,我将泛型类型的定义移至 IPlugin 本身并在扩展时指定了类型:

export interface IConfig {
  port: number
}

export declare interface IPlugin<T> {
setConfig(config: T): T
}

const _config: IConfig = {
  port: 7001
}

class Server implements IPlugin<IConfig> {

  public serverConfig : IConfig
  constructor() {
    this.serverConfig = _config
  }

  setConfig(config: IConfig) : IConfig {
    this.serverConfig = config
    return config
  }
}

[Playground][1]

  [1]: https://www.typescriptlang.org/play/?ssl=24&ssc=2&pln=1&pc=1#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgSQGEIl0EBzOAbwCg45JYAuOJAVwFsAjNGgXxo1QjeABNg2ADaYoeZKgw48%20AAqS25ZAB4AKgD5qNAM7AYxUhQAU2EmXIsdASgf9BNpEfgB9d3ZZFbCjgAXkN6ERYAdgAGaIBGVxopTCMjOABlNAA3NEQOMElgDmAUNNV1TSQtAItyA1o6BjYuSQRsOBMoHKhzOzh-XopG908oNmwYaEtHMPo4GAALBCMAOk7uwcpQn0DyRoFGkzNd612B3Znz2tn6ReW17LRNkLhfIbm4WRg2KCRX3f2riAA

推荐阅读