logo
💻 编程语言

TypeScript

TypeScript Cheat Sheet - 快速参考指南,收录常用语法、命令与实践。

📂 分类 · 编程语言🧭 Markdown 速查🏷️ 2 个标签
#ts#typed
向下滚动查看内容
返回全部 Cheat Sheets

Getting Started

Installing the Compiler
SHELL
滚动查看更多
npm install typescript --save-dev
npm tsc
Introduction

TypeScript is a superset of JavaScript that adds static typing, interfaces, and compile-time error checking. It compiles down to plain JavaScript.

Basic Types
TYPESCRIPT
滚动查看更多
let age: number = 25;
let name: string = 'Alice';
let isOnline: boolean = true;
let notSure: any = 'Could be anything';
let nothingHere: null = null;
let notDefined: undefined = undefined;
let symbolValue: symbol = Symbol('unique');
let bigIntValue: bigint = 9007199254740991n;
Arrays
TYPESCRIPT
滚动查看更多
let numbers: number[] = [1, 2, 3];
let fruits: Array<string> = ['apple', 'banana'];
let mixed: (string | number)[] = ['one', 2, 'three'];
Tuples
TYPESCRIPT
滚动查看更多
let person: [string, number];
person = ['John', 30]; // ✅
person = [30, 'John']; // ❌ Error
Enums
TYPESCRIPT
滚动查看更多
enum Direction {
	Up = 1,
	Down,
	Left,
	Right
}

let move: Direction = Direction.Up;

enum Status {
	Success = 'SUCCESS',
	Error = 'ERROR'
}
Type Aliases
TYPESCRIPT
滚动查看更多
type ID = string | number;
let userId: ID = 123;

type Callback = () => void;
Interfaces
TYPESCRIPT
滚动查看更多
interface User {
	name: string;
	age: number;
	isAdmin?: boolean; // optional
	readonly id: number; // readonly
}

const user: User = { name: 'Bob', age: 25, id: 1 };
Extending Interfaces
TYPESCRIPT
滚动查看更多
interface Animal {
	name: string;
}

interface Dog extends Animal {
	breed: string;
}

const dog: Dog = { name: 'Fido', breed: 'Labrador' };
Functions
TYPESCRIPT
滚动查看更多
function greet(name: string): string {
	return `Hello, ${name}`;
}

const add = (a: number, b: number): number => a + b;
Optional & Default Parameters
TYPESCRIPT
滚动查看更多
function log(message: string, userId?: string) {
	console.log(message, userId ?? 'Guest');
}

function multiply(a: number, b: number = 2) {
	return a * b;
}
Rest Parameters
TYPESCRIPT
滚动查看更多
function sum(...numbers: number[]): number {
	return numbers.reduce((acc, curr) => acc + curr, 0);
}
Function Overloads
TYPESCRIPT
滚动查看更多
function combine(a: number, b: number): number;
function combine(a: string, b: string): string;
function combine(a: any, b: any): any {
	return a + b;
}
Union & Intersection Types
TYPESCRIPT
滚动查看更多
type Status = 'success' | 'error' | 'loading';

type UserInfo = { name: string };
type AdminInfo = { admin: boolean };

type AdminUser = UserInfo & AdminInfo;
Literal Types
TYPESCRIPT
滚动查看更多
type Alignment = 'left' | 'center' | 'right';
let align: Alignment = 'left';
Generics
TYPESCRIPT
滚动查看更多
function identity<T>(value: T): T {
	return value;
}

let num = identity<number>(42);
let str = identity('Hello');
Generic Constraints
TYPESCRIPT
滚动查看更多
interface Lengthwise {
	length: number;
}

function logLength<T extends Lengthwise>(arg: T): void {
	console.log(arg.length);
}
Generic Interfaces
TYPESCRIPT
滚动查看更多
interface GenericIdentityFn<T> {
	(arg: T): T;
}

const myIdentity: GenericIdentityFn<number> = identity;
Classes
TYPESCRIPT
滚动查看更多
class Person {
	name: string;
	constructor(name: string) {
		this.name = name;
	}
	greet() {
		console.log(`Hello, I'm ${this.name}`);
	}
}

const alice = new Person('Alice');
alice.greet();
Access Modifiers
TYPESCRIPT
滚动查看更多
class Car {
	public brand: string;
	private speed: number;
	protected year: number;

	constructor(brand: string, speed: number, year: number) {
		this.brand = brand;
		this.speed = speed;
		this.year = year;
	}
}
Abstract Classes
TYPESCRIPT
滚动查看更多
abstract class Animal {
	abstract makeSound(): void;
	move(): void {
		console.log('Moving...');
	}
}

class Dog extends Animal {
	makeSound() {
		console.log('Woof!');
	}
}
Implements Interface
TYPESCRIPT
滚动查看更多
interface Vehicle {
	start(): void;
}

class Bike implements Vehicle {
	start() {
		console.log('Bike starting...');
	}
}
Type Assertions
TYPESCRIPT
滚动查看更多
let someValue: unknown = 'Hello TypeScript';
let strLength: number = (someValue as string).length;
Nullish Coalescing
TYPESCRIPT
滚动查看更多
let input: string | null = null;
let result = input ?? 'Default';
Optional Chaining
TYPESCRIPT
滚动查看更多
const user = { profile: { name: 'Alice' } };
console.log(user.profile?.name); // Alice
console.log(user.address?.street); // undefined
Namespaces
TYPESCRIPT
滚动查看更多
namespace Utils {
	export function log(msg: string) {
		console.log(msg);
	}
}

Utils.log('Hello');
Modules
TYPESCRIPT
滚动查看更多
// math.ts
export function add(a: number, b: number) {
	return a + b;
}

// app.ts
import { add } from './math';
console.log(add(2, 3));
Export Default
TYPESCRIPT
滚动查看更多
// logger.ts
export default class Logger {
	log(msg: string) {
		console.log(msg);
	}
}

// main.ts
import Logger from './logger';
const logger = new Logger();
logger.log('Info');
Promises & Async/Await
TYPESCRIPT
滚动查看更多
async function fetchData(): Promise<string> {
	return 'Data loaded';
}

fetchData().then(console.log);
Typing Async Functions
TYPESCRIPT
滚动查看更多
interface User {
	id: number;
	name: string;
}

async function getUser(id: number): Promise<User> {
	// Simulate fetch
	return { id, name: 'User' };
}
Readonly & Record
TYPESCRIPT
滚动查看更多
interface Config {
	readonly apiKey: string;
}

type Point = Record<'x' | 'y', number>;
const origin: Point = { x: 0, y: 0 };

Advanced Features

Type Guards
TYPESCRIPT
滚动查看更多
function isString(value: any): value is string {
	return typeof value === 'string';
}

function process(value: string | number) {
	if (isString(value)) {
		console.log(value.toUpperCase());
	} else {
		console.log(value.toFixed(2));
	}
}
Index Signatures
TYPESCRIPT
滚动查看更多
interface Dictionary {
	[key: string]: string;
}

const dict: Dictionary = { hello: 'world' };
Mapped Types
TYPESCRIPT
滚动查看更多
type Flags = { [K in 'option1' | 'option2']: boolean };
const flags: Flags = { option1: true, option2: false };
Conditional Types
TYPESCRIPT
滚动查看更多
type NonNullable<T> = T extends null | undefined ? never : T;
type SafeString = NonNullable<string | null>; // string
Unknown vs Any
TYPESCRIPT
滚动查看更多
let value: unknown;
value = 5; // OK
// console.log(value.length); // Error

let anyValue: any;
anyValue = 5;
console.log(anyValue.length); // No error, but risky
Never Type
TYPESCRIPT
滚动查看更多
function throwError(msg: string): never {
	throw new Error(msg);
}
Decorators (Experimental)
TYPESCRIPT
滚动查看更多
function sealed(target: any) {
	Object.seal(target);
	Object.seal(target.prototype);
}

@sealed
class SealedClass {}
Utility Types
TYPESCRIPT
滚动查看更多
interface Todo {
	title: string;
	description: string;
	completed: boolean;
}

// Partial
type PartialTodo = Partial<Todo>;

// Required
type RequiredTodo = Required<PartialTodo>;

// Pick
type TodoPreview = Pick<Todo, 'title' | 'completed'>;

// Omit
type TodoWithoutDesc = Omit<Todo, 'description'>;

// ReturnType
function f() {
	return { x: 10, y: 3 };
}
type P = ReturnType<typeof f>;

// Parameters
type Params = Parameters<(a: number, b: string) => void>;
Keyof and Typeof
TYPESCRIPT
滚动查看更多
interface Person {
	name: string;
	age: number;
}

type PersonKeys = keyof Person; // "name" | "age"

const person = { name: 'Alice', age: 30 };
type PersonType = typeof person; // { name: string; age: number }
Infer Keyword
TYPESCRIPT
滚动查看更多
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;

Conditionals and Loops

if Statement
TYPESCRIPT
滚动查看更多
const max: number = 100;
if (max > 50) {
	console.log('Large');
}
Ternary Operator
TYPESCRIPT
滚动查看更多
const isEven: boolean = 10 % 2 === 0 ? true : false;
Switch Statement
TYPESCRIPT
滚动查看更多
const color: string = 'red';
switch (color) {
	case 'red':
		console.log('Stop');
		break;
	default:
		console.log('Go');
}
For Loop
TYPESCRIPT
滚动查看更多
for (let i: number = 0; i < 5; i++) {
	console.log(i);
}
While Loop
TYPESCRIPT
滚动查看更多
let count: number = 0;
while (count < 5) {
	console.log(count++);
}
For...of Loop
TYPESCRIPT
滚动查看更多
const arr: number[] = [1, 2, 3];
for (const num of arr) {
	console.log(num);
}
For...in Loop
TYPESCRIPT
滚动查看更多
const obj = { a: 1, b: 2 };
for (const key in obj) {
	console.log(key);
}

Arrays and Iterables

Array Methods
TYPESCRIPT
滚动查看更多
const nums: number[] = [1, 2, 3];

// Map
const doubled: number[] = nums.map(n => n * 2);

// Filter
const evens: number[] = nums.filter(n => n % 2 === 0);

// Reduce
const sum: number = nums.reduce((acc, curr) => acc + curr, 0);
Readonly Arrays
TYPESCRIPT
滚动查看更多
const readOnlyNums: ReadonlyArray<number> = [1, 2, 3];
// readOnlyNums.push(4); // Error
Sets
TYPESCRIPT
滚动查看更多
const set: Set<number> = new Set([1, 2, 3]);
set.add(4);
set.delete(1);
Maps
TYPESCRIPT
滚动查看更多
const map: Map<string, number> = new Map();
map.set('one', 1);
map.get('one'); // 1

Objects

Object Types
TYPESCRIPT
滚动查看更多
const car: { type: string; mileage?: number } = {
	type: 'Toyota'
};
Indexable Types
TYPESCRIPT
滚动查看更多
interface StringArray {
	[index: number]: string;
}

const myArray: StringArray = ['Bob', 'Fred'];
Excess Property Checks
TYPESCRIPT
滚动查看更多
interface Square {
	color: string;
	width: number;
}

// const redSquare = { color: "red", width: 100, height: 100 }; // Error if strict

Modules and Namespaces

Namespace with Internal Modules
TYPESCRIPT
滚动查看更多
namespace Geometry {
	export interface Point {
		x: number;
		y: number;
	}
	export function distance(p1: Point, p2: Point): number {
		return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2);
	}
}
Module Resolution

// tsconfig.json { "compilerOptions": { "moduleResolution": "node" } }

Error Handling

Try Catch
TYPESCRIPT
滚动查看更多
try {
	throw new Error('Oops');
} catch (e: unknown) {
	if (e instanceof Error) {
		console.log(e.message);
	}
}
Custom Errors
TYPESCRIPT
滚动查看更多
class CustomError extends Error {
	constructor(message: string) {
		super(message);
	}
}

TypeScript with JavaScript Features

Destructuring
TYPESCRIPT
滚动查看更多
const [first, second]: [number, number] = [1, 2];
const { name: userName, age }: { name: string; age: number } = { name: 'Alice', age: 30 };
Spread Operator
TYPESCRIPT
滚动查看更多
const arr1: number[] = [1, 2];
const arr2: number[] = [...arr1, 3, 4];
Template Literals
TYPESCRIPT
滚动查看更多
const greeting: string = `Hello, ${name}`;
Arrow Functions
TYPESCRIPT
滚动查看更多
const square = (x: number): number => x * x;

相关 Cheat Sheets

1v1免费职业咨询
logo

Follow Us

linkedinfacebooktwitterinstagramweiboyoutubebilibilitiktokxigua

We Accept

/image/layout/pay-paypal.png/image/layout/pay-visa.png/image/layout/pay-master-card.png/image/layout/pay-airwallex.png/image/layout/pay-alipay.png

地址

Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)
Level 2, 171 La Trobe St, Melbourne VIC 3000
四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号
Business Hub, 155 Waymouth St, Adelaide SA 5000

Disclaimer

footer-disclaimerfooter-disclaimer

JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.

匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议

© 2017-2025 JR Academy Pty Ltd. All rights reserved.

ABN 26621887572