TypeScript:给JavaScript加上类型安全

TypeScript 的核心优势

TypeScript 是 JavaScript 的超集,通过静态类型检查增强了代码的可靠性。类型系统能在编译阶段捕获潜在错误,减少运行时异常。

基础类型注解

变量声明时可直接标注类型:

typescript 复制代码
let username: string = "Alice";
let age: number = 30;
let isActive: boolean = true;

数组和元组类型:

typescript 复制代码
let numbers: number[] = [1, 2, 3];
let tuple: [string, number] = ["text", 42];

接口与类型别名

接口定义对象结构:

typescript 复制代码
interface User {
  id: number;
  name: string;
  email?: string; // 可选属性
}

类型别名支持更复杂的类型组合:

typescript 复制代码
type Point = {
  x: number;
  y: number;
};
type ID = string | number;

函数类型约束

参数和返回值类型标注:

typescript 复制代码
function greet(name: string): string {
  return `Hello, ${name}`;
}

箭头函数类型:

typescript 复制代码
const add: (x: number, y: number) => number = (x, y) => x + y;

泛型应用

创建可复用的类型组件:

typescript 复制代码
function identity<T>(arg: T): T {
  return arg;
}

泛型约束示例:

typescript 复制代码
interface Lengthwise {
  length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
  console.log(arg.length);
  return arg;
}

类型推断与断言

自动类型推断:

typescript 复制代码
let inferredString = "text"; // 自动推断为string类型

类型断言语法:

typescript 复制代码
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

高级类型技巧

联合类型与交叉类型:

typescript 复制代码
type Admin = User & { privileges: string[] };

索引签名处理动态属性:

typescript 复制代码
interface StringArray {
  [index: number]: string;
}

编译配置

tsconfig.json 关键配置项:

json 复制代码
{
  "compilerOptions": {
    "target": "ES6",
    "strict": true,
    "module": "commonjs"
  }
}

类型声明文件

3r.ninequeen2228.com

jy.ninequeen2228.com

5z.ninequeen2228.com

da.ninequeen2228.com

vn.ninequeen2228.com

bc.ninequeen2228.com

gz.ninequeen2228.com

uj.ninequeen2228.com

9l.ninequeen2228.com

dh.ninequeen2228.com

x3.ninequeen2228.com

4e.ninequeen2228.com

xl.ninequeen2228.com

pb.ninequeen2228.com

o4.ninequeen2228.com

nq.ninequeen2228.com

e2.ninequeen2228.com

gx.ninequeen2228.com

3f.ninequeen2228.com

us.ninequeen2228.com

8p.ninequeen2228.com

qa.ninequeen2228.com

kj.ninequeen2228.com

9u.ninequeen2228.com

dy.ninequeen2228.com

kg.ninequeen2228.com

ok.ninequeen2228.com

jb.ninequeen2228.com

cw.ninequeen2228.com

ih.ninequeen2228.com

td.ninequeen2228.com

ob.ninequeen2228.com

z1.ninequeen2228.com

ep.ninequeen2228.com

d7.ninequeen2228.com

cp.ninequeen2228.com

t4.ninequeen2228.com

l1.ninequeen2228.com

ls.ninequeen2228.com

pt.ninequeen2228.com

tp.ninequeen2228.com

hr.ninequeen2228.com

hi.ninequeen2228.com

7k.ninequeen2228.com

l4.ninequeen2228.com

9j.ninequeen2228.com

ig.ninequeen2228.com

ac.ninequeen2228.com

fo.ninequeen2228.com

ev.ninequeen2228.com

p4.ninequeen2228.com

gm.ninequeen2228.com

4o.ninequeen2228.com

1x.ninequeen2228.com

ej.ninequeen2228.com

fd.ninequeen2228.com

no.ninequeen2228.com

cq.ninequeen2228.com

yz.ninequeen2228.com

if.ninequeen2228.com

ns.ninequeen2228.com

ir.ninequeen2228.com

dx.ninequeen2228.com

9e.ninequeen2228.com

pj.ninequeen2228.com

x1.ninequeen2228.com

u5.ninequeen2228.com

4h.ninequeen2228.com

eu.ninequeen2228.com

st.ninequeen2228.com

iz.ninequeen2228.com

vt.ninequeen2228.com

p6.ninequeen2228.com

23.ninequeen2228.com

fn.ninequeen2228.com

fg.ninequeen2228.com

14.ninequeen2228.com

0d.ninequeen2228.com

4c.ninequeen2228.com

wn.ninequeen2228.com

4r.ninequeen2228.com

uq.ninequeen2228.com

dv.ninequeen2228.com

90.ninequeen2228.com

c3.ninequeen2228.com

xp.ninequeen2228.com

e6.ninequeen2228.com

c6.ninequeen2228.com

r4.ninequeen2228.com

h1.ninequeen2228.com

fa.ninequeen2228.com

p3.ninequeen2228.com

ui.ninequeen2228.com

3j.ninequeen2228.com

er.ninequeen2228.com

5w.ninequeen2228.com

t1.ninequeen2228.com

um.ninequeen2228.com

a4.ninequeen2228.com

aa.ninequeen2228.com

为第三方库添加类型支持:

typescript 复制代码
declare module 'untyped-lib' {
  export function doSomething(): void;
}
相关推荐
半个落月1 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
半个落月1 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
半个落月2 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
志尊宝3 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
bmxy小明同学9 小时前
2026-10-11-幻觉治理
服务器·前端·javascript
m0_587383009 小时前
无人自助拼豆系统落地开发实战指南 核心逻辑实现与部署经验分享
前端·javascript·vue.js·人工智能·经验分享·需求分析
zhaiyy10 小时前
HTML Popover API 实践
前端·javascript·html
雨雨雨雨雨别下啦10 小时前
【OpenHarmony北向开发】ArkTS基础教学
typescript·arkts·openharmonys
OpsEye10 小时前
企业 AI 管理新需求:不仅要接入模型,还要看懂每一次调用
javascript·ai编程
牧艺10 小时前
SPA 也能像原生 App:View Transitions API 从原理到可上线实战
前端·javascript·css