Reactjs 在Typescript中编写简单测试会导致类型断言错误

Reactjs 在Typescript中编写简单测试会导致类型断言错误,reactjs,typescript,react-dom,Reactjs,Typescript,React Dom,禁止使用typescript使用“”语法定义测试输出类型断言。改用“as”语法。错误 /app.test.ts 从“React”导入React; 从“react dom”导入react dom; 从“./App”导入应用程序; 它('渲染而不崩溃',()=>{ const div=document.createElement('div'); ReactDOM.render( 编辑:@rzelek接受的答案指向正确的方向 如编译器选项中所定义的,定义了JSX的解释方式。在我的例子中使用了“JSX

禁止使用typescript使用“”语法定义测试输出
类型断言。改用“as”语法。
错误

/app.test.ts

从“React”导入React;
从“react dom”导入react dom;
从“./App”导入应用程序;
它('渲染而不崩溃',()=>{
const div=document.createElement('div');
ReactDOM.render(


编辑:@rzelek接受的答案指向正确的方向

如编译器选项中所定义的,定义了JSX的解释方式。在我的例子中使用了
“JSX”:“react”
,这意味着需要使用方法react.createElement()来创建组件(请参阅JSX手册中的表):

最终结果:/app.test.ts

从“React”导入React;
从“react dom”导入react dom;
从“./App”导入应用程序;
它('渲染而不崩溃',()=>{
常量app=React.createElement(app);
const div=document.createElement('div');
ReactDOM.render(应用程序,div);
});

包含
JSX
的类型脚本文件应具有
*.tsx
扩展名,而不是
.ts

您可以在此处看到类似的问题:

此外,您的
tsconfig.json
应该具有适当的配置。对于我的CRA应用程序,这是:

{
  "compilerOptions": {
    ...
    "jsx": "preserve",
    ...
  }
}

您可以看到的错误很可能来自tslint,而不是Typescript本身。您可以在此处看到一条规则:。CRA的基本tslint配置应类似于以下内容:

{
  "extends": ["tslint:latest", "tslint-react"],
  "rules": {
    // override tslint-react rules here
    "jsx-wrap-multiline": false
  }
}
作为一个好的起点,您可以尝试向
tslint.json
规则添加
“无尖括号类型断言”:false
,并查看错误是否消失

PS.tslint通常会指出错误的来源,例如:
错误:app/components/Root/index.ts[6,7]:禁止使用“”语法键入断言。请改用“as”语法。
您的


还有,

这是在tsx文件中吗?是的,也作为ts进行了尝试。是的,应用程序有它:
app.tsx
。也尝试了
app.test.tsx
app.test.ts
尝试了
“jsx”:“保留”、
“jsx”:“反应”,
正确,将其定义为:
class App extends React.Component
是否在组件中使用类型断言?请参阅:
interface Props {
   //... some props
}
interface State {
   //... some state
}
class MyComponent extends React.Component<Props, State> { ... }
const MyComponent: React.FC<Props> = ...