jsx和tsx的区别和关系是啥,后端程序员学前端

jsx和tsx的区别和关系是啥,后端程序员学前端

先给结论:JSX 和 TSX 不是两种语言,而是"带标签语法的两种写法"。区别就一个字——类型

它们的关系是:TSX = TypeScript + JSX。JSX 是给 JavaScript 加的语法糖(让你能在.js里写像 HTML 的标签);TSX 是给 TypeScript 加的同一份语法糖(写在.ts里)。React 不管你用哪个,最终都把它们编译成同一个东西:一串React.createElement()(或新版jsx())函数调用,也就是虚拟 DOM 节点。

下面这张图把"从源文件到 React 元素"的整条链路画清楚了:

一、具体区别(一张表)

维度JSXTSX
语言基础JavaScript(动态)TypeScript(静态类型)
文件后缀.jsx.tsx
类型检查无,错误运行时才炸编译期就拦,写错即红线
编译工具Babel / SWCtsc+ Babel / SWC
IDE 补全 / 重构一般强(类型驱动)
学习成本多学一套类型系统

二、后端视角的类比

  • JSX ≈ 动态语言脚本(Python / 裸 JS):灵活,但age传成字符串只有跑起来才崩。
  • TSX ≈ 静态语言(Java / Go / C# / Kotlin):有接口契约、编译期报错、IDE 自动补全和重命名飞起。

对你这种后端来说,TSX 几乎零违和感——interface UserCardProps就是你的 DTO,<T>泛型还是泛型,编译报错的直觉和后端完全一致。

三、同一组件,直接对照

下面这张图用同一个UserCard组件,左边 JSX、右边 TSX——你会发现 UI 结构一模一样,TSX 只是多了"类型定义"那几行:

四、给你的前端学习路线(后端友好版)

  1. 先建立心智模型:组件 = 函数,props = 入参,state/hooks = 局部可变状态。本质就是"带 UI 返回值的函数",别被"前端"俩字吓到。
  2. JSX 基础半天上手<div>{变量}map渲染列表、onClick事件,就这些。
  3. 立刻上 TSX:把 props 用interface框死,享受编译期保护(你刚看的那张对照图就是这个)。
  4. 工具链别自己配npm create vite@latestreact-ts模板,开箱即用,别去手搓 webpack。

一句话收尾:JSX 是皮,TSX 是带类型的皮;