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;
}
相关推荐
软件开发技术深度爱好者38 分钟前
小学英语单词魔法学园HTML5实现
javascript·html5·英语学习
勉灬之43 分钟前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
糖果店的幽灵1 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
这是个栗子1 小时前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
letisgo51 小时前
VMware Workstation + Ubuntu 26.04 LTS 小白运维部署手册
linux·运维·ubuntu
布兰妮甜2 小时前
从 0 搭建企业级 Vue3/Vite 脚手架(规范、eslint、husky、打包、环境变量全流程)
typescript·vue3·vite·脚手架·前端工程化
Revolution613 小时前
一段 JavaScript 代码执行时,到底发生了什么
前端·javascript
东方小月3 小时前
从0开发一个 Coding Agent(一):前言
前端·人工智能·typescript
To_OC12 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode