前端常见文件后缀指南:ts / tsc / jsx / tsx / scss

本文从浏览器运行机制出发,系统解析 ts、tsc、jsx、tsx、scss 等常见后缀的本质、分工与适用场景,帮助读者建立清晰的文件类型与工程实践认知。

一、前置认知:浏览器实际支持什么?浏览器只认识三类资源:

类型

用途

HTML

结构

CSS

样式

JavaScript

逻辑

核心结论:.ts、.tsx、.jsx、.scss 均无法被浏览器直接执行,需经构建工具编译为 js/css 后使用。

术语速查:构建 = 将 ts/tsx/scss 编译为浏览器可执行的 js/css;PR = 代码合并请求;构建产物 = 最终打包出的 js、css 文件。

二、ts:带类型约束的 JavaScript2.1 定义与本质ts = 带类型约束的 JavaScript,本质是 JS 的超集,通过类型约束在编译阶段提前发现错误。

function add(a: number, b: number): number { return a + b}add(1, "2") // ❌ 编译阶段即被拦截

2.2 典型场景接口字段类型变更时:

JS:代码可运行,但类型不匹配分支可能静默失效,逻辑错误难以排查

TS:类型声明后,tsc 在编译阶段报错,需修正类型后才能通过

示例:若 userId 从 string 改为 number,前端仍写 if (userId === "123"),TS 会直接报错。

2.3 错误 vs 正确

场景

错误

正确

接口返回 { count: 100 },误写 count.toUpperCase()

JS 运行时才报错

TS 在编写时即红线提示「number 无 toUpperCase 方法」

实践要点:ts 的价值主要体现在类型错误提前暴露,避免将问题带入运行时。

三、tsc:类型检查与编译3.1 职能tsc(TypeScript Compiler)除将 ts 编译为 js 外,主要承担:

类型检查(核心)

语法降级(兼容目标浏览器)

决定代码是否可进入构建产物

3.2 典型报错示例// 代码:const user = { name: "张三", age: 18 };user.age.toUpperCase();// tsc 报错:// Property 'toUpperCase' does not exist on type 'number'.

关闭 tsc 后代码可运行,但 age 为数字时会在运行时崩溃。tsc 在编译阶段即可拦截此类问题。

3.3 错误 vs 正确

场景

错误

正确

遇到 tsc 报错

注释类型、关闭检查

修正类型或使用类型断言,使 tsc 通过

实践要点:tsc 报错不应通过关闭检查规避,应通过修正类型或合理断言解决。

四、jsx / tsx:语法与边界4.1 jsxjsx 是 React 引入的语法扩展,允许在 JS 中书写类似 HTML 的结构,编译后被转换为 React.createElement 调用:

const element =

Hello World

// 编译为:// React.createElement('h1', null, 'Hello World')

4.2 tsxtsx = TypeScript + JSX。若在 React 组件中同时使用 JSX 与类型约束,文件后缀必须为 .tsx。

4.3 错误 vs 正确

场景

错误

正确

在 .ts 中书写