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;
}
相关推荐
老毛肚10 分钟前
jeecgboot TS + Vue 模板化 03
前端·javascript·vue.js
小林ixn11 分钟前
揭秘JavaScript面向对象:从栈模拟队列到原型链的深度剖析
javascript
FlyWIHTSKY16 分钟前
React 19 + Next.js 16(App Router)项目中集成 MSW
开发语言·javascript·vue.js
面向对象World22 分钟前
Z8350 Broadcom SDIO网卡调试Ubuntu 22.04 Server版
linux·运维·ubuntu
冰暮流星36 分钟前
javascript之对象的建立-使用Object
开发语言·javascript·ecmascript
AI_零食39 分钟前
呼吸灯 - 通过鸿蒙PC Electron框架技术完成-在焦虑时代守护每一次呼吸的数字禅修
前端·javascript·华为·electron·前端框架·鸿蒙
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_5:技能测试——变量实战
java·开发语言·前端·javascript
HjhIron1 小时前
深入理解 JavaScript 执行机制:从编译到运行的完整揭秘
javascript
云水一下1 小时前
TypeScript 从零基础到精通(四):面向对象编程(类与继承)
javascript·typescript
shmily麻瓜小菜鸡1 小时前
Bootstrap 4 常用工具类速查表
前端·javascript·bootstrap