Karma-typescript Interface XXX 不能同时扩展类型' YYY

Posted

技术标签:

【中文标题】Karma-typescript Interface XXX 不能同时扩展类型\' YYY【英文标题】:Karma-typescript Interface XXX cannot simultaneously extend types ' YYYKarma-typescript Interface XXX 不能同时扩展类型' YYY 【发布时间】:2018-06-13 12:48:54 【问题描述】:

我的tsconfig.json


  "compilerOptions": 
    "outDir": "./dist/",
    "sourceMap": true,
    "module": "es6",
    "target": "es5",
    "jsx": "react",
    "allowJs": true,
    "preserveConstEnums": true,
    "removeComments": true,
    "noImplicitAny": false,
    "moduleResolution": "node",
    "noUnusedParameters": true
  ,
  "include": [
    "./src/**/*"
  ],
  "exclude": [
    "node_modules",
    "@typings",
    "typings/main",
    "typings/main.d.ts",
    "typings/index.d.ts"
  ],
  "paths": 
    "react": ["node_modules/@types/react"]
  

我已将karma-typescript 添加到我的配置中

settings.frameworks.push('karma-typescript');
settings.preprocessors['test-bundler.js'].unshift('karma-typescript');
settings.karmaTypescriptConfig = 
    tsconfig: './tsconfig.json',
;

使用 webpack,开发服务器和编译工作正常。

这是一个虚拟测试

describe('Root', () => 
    it('should pass', () => 
        console.log('done');
    );
);

运行测试时,我得到

node_modules/@types/react/index.d.ts(2736,19):错误 TS2320:接口 “ElementClass”不能同时扩展类型“Component”和“Component”。类型的命名属性“道具” “组件”和“组件”不相同。

和那些类似。如果我删除settings.preprocessors['test-bundler.js'].unshift('karma-typescript');,那么测试运行良好(但是当我开始导入源文件时,我无法预编译打字稿。

发生了什么事?我的正常构建和开发服务器在tsconfig.json 下运行良好

【问题讨论】:

【参考方案1】:

发生了什么

编译上下文中有两个react.d.ts

修复

再次删除node_modules 和任何package-lock(或纱锁)和npm install

如果不起作用,请找到无效的模块(所有模块都应将react.d.ts 作为peerDependency,而不是硬dependency)并将其报告到他们的项目中。

【讨论】:

是的,我知道 react-router 哈它是自己的 react.d.ts。我在运行dev-server 时遇到了同样的问题。解决方法是在我的tsconfig.json 中使用paths。我很惊讶在测试中没有得到尊重

以上是关于Karma-typescript Interface XXX 不能同时扩展类型' YYY的主要内容,如果未能解决你的问题,请参考以下文章

Karma-typescript Interface XXX 不能同时扩展类型' YYY

GO语言的json输入(反序列化)之interfac{}存储

PowerShell 初始化环境 用于批量部署

PowerShell 初始化环境 用于批量部署

如何在 karma 测试运行器中包含来自 webpack 的供应商捆绑包

Control Group v2