Skip to content
发布于 更新于
  • 💡 ES6 是 JavaScript 的语言标准,不需要启用,现代浏览器天然支持大多数 ES6+ 特性

  • 💡 TS 是 JavaScript 的超集,浏览器不能直接执行,必须先 编译成 JavaScript:

shell
npm install -D typescript
npx tsc --init    # 生成 tsconfig.json
npx tsc           # 编译 .ts 文件为 .js 文件

1. js ES6 typescript的常见用法 ​


1.1. 🧠 一、ES6 常用特性(现代 JavaScript) ​

✅ 1. 变量声明:let / const ​

js
let count = 1;      // 可重新赋值
const PI = 3.14;    // 常量,不可重新赋值

✅ 2. 箭头函数 ()=> ​

js
const sum = (a, b) => a + b;

✅ 3. 模板字符串 ${} ​

js
const name = 'Tom';
console.log(`Hello, ${name}!`);

✅ 4. 解构赋值 ​

js
const person = { name: 'Tom', age: 20 };
const { name, age } = person;
const arr = [1, 2];
const [a, b] = arr;

✅ 5. 默认参数、展开/剩余语法 ​

js
function greet(name = "Guest") {
  console.log("Hello " + name);
}
const arr1 = [1, 2];
const arr2 = [...arr1, 3];   // 展开
const [first, ...rest] = arr2; // 剩余

✅ 6. 类(Class) ​

js
class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

✅ 7. 模块导入/导出 ​

js
// a.js
export const PI = 3.14;
export default function greet() {}
// b.js
import greet, { PI } from './a.js';

1.2. 🦾 二、TypeScript 常用写法(加上类型系统) ​

✅ 1. 类型注解 ​

ts
let age: number = 18;
let name: string = "Tom";
let isAdmin: boolean = false;
let tags: string[] = ["js", "ts"];

✅ 2. 函数类型 ​

ts
function sum(a: number, b: number): number {
  return a + b;
}

✅ 3. 接口(Interface)和类型(Type) ​

ts
interface User {
  id: number;
  name: string;
}

const user: User = {
  id: 1,
  name: "Alice"
};
ts
type Point = { x: number; y: number };
const p: Point = { x: 10, y: 20 };

✅ 4. 可选属性与只读 ​

ts
interface Product {
  id: number;
  name?: string;      // 可选
  readonly price: number; // 只读
}

✅ 5. 泛型 ​

ts
function identity<T>(arg: T): T {
  return arg;
}

identity<number>(123);
identity<string>("abc");

✅ 6. 枚举(enum) ​

ts
enum Direction {
  Up,
  Down,
  Left,
  Right
}

let dir: Direction = Direction.Up;

✅ 7. 类型断言(Type Assertion) ​

ts
let someValue: any = "hello";
let len: number = (someValue as string).length;

1.3. 🧩 三、ES6 + TS 综合示例 ​

ts
// TypeScript class with ES6 syntax
class Person {
  constructor(public name: string, private age: number) {}
  greet(): void {
    console.log(`Hi, I'm ${this.name}, age ${this.age}`);
  }
}
const p = new Person("Alice", 30);
p.greet();

1.4. 🧠 四、ES6 与 TypeScript 对比 ​

特性ES6TypeScript
类型系统❌ 无✅ 强类型
接口定义❌ 无✅ interface/type
类支持✅ 有✅ 更强(访问修饰符)
编译检查❌ 运行时报错✅ 编译时报错
工具支持✅ 基本提示✅ 更强的智能补全

1.5. ✅ 推荐使用场景 ​

场景推荐
快速写脚本 / DemoES6 就够了
项目工程开发强烈推荐 TypeScript
使用 React / Vue 3 等现代框架推荐 TypeScript,配合 Vite/webpack

1.6. 🚀 Bonus:TS 中常用类型缩写总结 ​

ts
any         // 任意类型
unknown     // 安全的 any
void        // 无返回值
never       // 永远不会发生(抛异常或死循环)
null / undefined // 空值

Record<string, number> // 对象类型(键是 string,值是 number)
Partial<T>     // 所有属性变为可选
Pick<T, 'a'>   // 从 T 中挑出某个字段
Omit<T, 'a'>   // 从 T 中排除某个字段

2. ✅ ES6 ➜ TypeScript 转换手册(实用对照表) ​

ES6 写法TypeScript 对应写法说明
let msg = "hello"let msg: string = "hello"明确类型注解
function add(a, b) {}function add(a: number, b: number): number {}参数和返回值都需标注类型
const arr = [1, 2]const arr: number[] = [1, 2]明确数组中元素类型
const user = { id: 1, name: "Tom" }interface User { id: number; name: string }
const user: User = {...}
使用接口定义结构
class A { constructor(name) { this.name = name; } }class A { constructor(public name: string) {} }构造函数中直接定义属性
x.toUpperCase()(x as string).toUpperCase()类型断言
export default func同样写法,但 TS 会检查类型模块系统相同,但需注意类型匹配
无法判断对象属性合法性使用 Record<string, any> 或接口断言提高类型安全

3. 📘 示例代码对比 ​

3.1. ES6 ​

js
function greet(name) {
  return "Hello, " + name;
}

3.2. TypeScript ​

ts
function greet(name: string): string {
  return "Hello, " + name;
}

4. 🧪 常见 ES6 → TS 类型转换参考 ​

JS 值TypeScript 类型
"abc"string
123number
true / falseboolean
[1, 2, 3]number[]
{ name: "Tom" }{ name: string }
() => void() => void
PromisePromise<number>(带泛型)

5. 💡 推荐练习项目(从 ES6 到 TS) ​

5.1. 🧑‍💻 零基础练习 ​

项目名称内容提示
👉 数组工具函数封装实现 map, filter, reduce 等函数加入类型:泛型函数 T[] => U[]
👉 表单校验器校验字段是否为空、格式合法等使用接口描述字段结构
👉 模拟购物车商品列表 + 购物车 + 结算TS 用接口描述商品、订单结构

5.2. 🧰 中级项目 ​

项目名称内容技术
✅ Todo 应用(含增删改)表单 + 列表管理TypeScript + HTML/React
✅ Markdown 编辑器输入 markdown 文本,右侧实时预览TS + marked.js
✅ JSON 结构校验器输入 JSON,校验字段、类型泛型 + 接口 + 类型断言

6. 🚀 最佳学习资源 ​

类型推荐资源
文档TypeScript 官方文档
教程tsconfig.dev(配置教学)
typescript-exercises
项目模板npx create-react-app myapp --template typescript
在线编辑Playground

基于 VitePress + GitHub Actions 自动部署