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;
}
相关推荐
CCIE-Yasuo17 分钟前
网络安全-Javascript基础
javascript·安全·web安全
Sw1zzle27 分钟前
Go入门(零):Linux Ubuntu 22.04 安装 Go
linux·ubuntu·golang
时空无限1 小时前
ubuntu 26.04 sudo 连不上主机卡住然后失败问题处理
linux·服务器·ubuntu
幻境如梦丶皆为虚1 小时前
从零写一个 DSH 插件:在左侧菜单栏加一个「测试」
开发语言·javascript·ecmascript
qq762118221 小时前
Ubuntu20.04
ubuntu
吹什么轩1 小时前
constexpr 完全指南:从 const 的两种含义,到编译期计算的四次演进
java·前端·javascript
承渊政道2 小时前
Linux网络学习【五种IO模型与⾮阻塞IO】
linux·网络·学习·ubuntu·io模型·非阻塞io
kiros_wang4 小时前
通用工具模块封装:防抖节流、参数校验公共工具类
linux·运维·ubuntu
honsor4 小时前
以太网温湿度传感器|动环监控核心采集设备,协议、组网、Zabbix接入实战
linux·服务器·ubuntu
程序员大阳4 小时前
副队长JavaScript教程(67)-Ajax初识:背景、历史与核心概念
javascript·ajax·同步·异步·概念·背景·来是