TypeScript 是微软开发的开源编程语言,是 JavaScript 的超集,添加了静态类型系统。它编译为纯 JavaScript,可以在任何浏览器或 Node.js 上运行。TypeScript 提供了最新的 ECMAScript 特性,并添加了可选的静态类型检查。
// 基础类型
let count: number = 42
let name: string = "TypeScript"
let isActive: boolean = true
// 数组
let numbers: number[] = [1, 2, 3]
let names: Array<string> = ["Alice", "Bob"]
// 元组
let user: [string, number] = ["Alice", 25]
// 枚举
enum Color {
Red = "red",
Green = "green",
Blue = "blue"
}
interface User {
id: number
name: string
email?: string // 可选属性
readonly age: number // 只读属性
}
function createUser(user: User): User {
return user
}
class Person {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
greet(): string {
return `Hello, I'm ${this.name}`
}
}
class Employee extends Person {
employeeId: number
constructor(name: string, age: number, id: number) {
super(name, age)
this.employeeId = id
}
greet(): string {
return `${super.greet()}, ID: ${this.employeeId}`
}
}
function identity<T>(arg: T): T {
return arg
}
// 使用泛型
let stringResult = identity<string>("hello")
let numberResult = identity<number>(42)
// 泛型约束
interface Lengthwise {
length: number
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length)
return arg
}
// 联合类型
let id: number | string = "abc123"
// 交叉类型
interface Person {
name: string
}
interface Employee {
employeeId: number
}
type PersonEmployee = Person & Employee
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
npm install -g typescript
# 或
npm install --save-dev typescript
# 编译所有 .ts 文件
tsc
# 编译单个文件
tsc index.ts
# 监视模式(自动编译)
tsc --watch
# 初始化 TypeScript 项目
tsc --init
# 安装类型定义
npm install @types/node @types/react