Reactjs 在Typescript中编写简单测试会导致类型断言错误
禁止使用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
类型断言。改用“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> = ...