优雅使用ts,解放双手

1. 善用类型推断,减少手动定义

TS 的类型推断能力很强,很多时候无需显式声明:

TypeScript 复制代码
// 无需写 let age: number

let age = 28;

// 函数返回值可自动推断

function add(a: number, b: number) {

return a + b; // 自动推断返回number

}

2. 合理组织类型文件

将类型定义与业务代码分离,例如:

TypeScript 复制代码
src/

types/ // 集中存放类型定义

user.ts

order.ts

components/ // 业务组件

utils/ // 工具函数

3.避免过度类型化

无需为每个变量都定义类型,优先用推断:

TypeScript 复制代码
// 不必写成 const list: number[] = [1,2,3]

const list = [1, 2, 3];

4.利用工具简化类型工作

  • 使用typeof提取已有变量类型:
TypeScript 复制代码
const defaultUser = { name: "admin", age: 30 };

type User = typeof defaultUser; // 自动获得 { name: string; age: number }
  • 用Partial、Pick等工具类型减少重复定义:
TypeScript 复制代码
interface User { id: number; name: string; age: number }

type UserWithoutId = Pick<User, "name" | "age">; // 提取部分属性

5.巧用类型守卫简化分支逻辑

当处理联合类型时,自定义类型守卫可以替代冗长的typeof或instanceof判断,让类型判断更直观:

TypeScript 复制代码
// 定义联合类型

type Admin = { role: 'admin'; permissions: string[] };

type User = { role: 'user'; name: string };

type Person = Admin | User;

// 自定义类型守卫

function isAdmin(person: Person): person is Admin {

return person.role === 'admin';

}

// 使用时自动缩小类型范围

function handlePerson(person: Person) {

if (isAdmin(person)) {

// TS自动推断为Admin类型,可直接访问permissions

console.log(person.permissions);

} else {

// 自动推断为User类型

console.log(person.name);

}

}

非空断言与可选链减少冗余判断

合理使用!(非空断言)和?.(可选链),替代繁琐的if (xxx)判断:

TypeScript 复制代码
interface Data {

user?: {

name?: string;

};

}

const data: Data = {};

// 传统写法:多层判断

if (data.user && data.user.name) {

console.log(data.user.name);

}

// 优雅写法:可选链 + 非空断言(确保存在时使用)

console.log(data.user?.name); // 安全访问,不存在时返回undefined
相关推荐
2501_940041741 分钟前
全栈开发实战:5个高复杂度后端集成场景
前端
蝎子莱莱爱打怪2 分钟前
👋🏻👋🏻再见,拉勾网——那个"最懂互联网人"的招聘平台倒了😭
前端·后端·招聘
weixin_4379189621 分钟前
前端String 数组和Math API大全
前端·javascript
阿正的梦工坊21 分钟前
【Typescript】03-函数对象与接口
前端·javascript·typescript
海上彼尚27 分钟前
Nodejs也能写Agent - 7.基础篇 - MCP
前端·javascript·人工智能·node.js
李剑一28 分钟前
我开发了一款防止摸鱼被发现的工具,现已开源
前端
启山智软29 分钟前
从零搭建商城系统前端:技术选型与核心架构实践
前端·架构
ZC跨境爬虫34 分钟前
跟着 MDN 学CSS day_5:掌握属性选择器的存否匹配与子字符串匹配
前端·javascript·css·ui·html
ZC跨境爬虫34 分钟前
跟着 MDN 学CSS day_4:(深入理解CSS选择器的核心机制)
前端·javascript·css·交互