TypeScript 语法及示例

TypeScript 语法及示例

TypeScript 是一种静态类型的编程语言,它是 JavaScript 的超集,添加了可选的类型系统和编译时的类型检查。以下是 TypeScript 的一些关键语法元素及其示例代码,帮助你更好地理解和使用 TypeScript。

1. 基本类型

TypeScript 支持多种基本类型,包括:

  • boolean
  • number
  • string
  • array
  • tuple
  • enum
  • any
  • void
  • null 和 undefined
  • never

示例:

 

typescript

let isDone: boolean = false;
let age: number = 25;
let name: string = "Alice";
let list: number[] = [1, 2, 3];
let tuple: [string, number] = ["hello", 42];

enum Color { Red, Green, Blue };
let c: Color = Color.Green;

let notSure: any = 4;
notSure = "maybe a string";

function greet(): void {
  console.log("Hello, world!");
}

let u: undefined = undefined;
let n: null = null;

// never 类型表示永远不会返回值的函数
function throwError(message: string): never {
  throw new Error(message);
}
2. 变量声明与赋值

TypeScript 提供了两种主要的变量声明方式:varlet 和 const。推荐使用 let 和 const

示例:

 

typescript

let count: number = 0;
count = 1; // OK

const pi: number = 3.14;
// pi = 3.14159; // 错误,不能重新赋值
3. 函数

函数可以有参数和返回值类型。

示例:

 

typescript

function add(x: number, y: number): number {
  return x + y;
}

// 箭头函数
const multiply = (x: number, y: number): number => x * y;

// 可选参数
function greet(name?: string) {
  if (name) {
    console.log(`Hello, ${name}!`);
  } else {
    console.log("Hello, stranger!");
  }
}

greet("Alice"); // Hello, Alice!
greet();        // Hello, stranger!
4. 接口(Interfaces)

接口用于定义对象的形状。

示例:

 

typescript

interface Person {
  firstName: string;
  lastName: string;
}

function fullName(person: Person): string {
  return `${person.firstName} ${person.lastName}`;
}

let alice: Person = {
  firstName: "Alice",
  lastName: "Smith"
};

console.log(fullName(alice)); // 输出: Alice Smith
5. 类(Classes)

TypeScript 支持面向对象编程,类可以包含属性和方法。

示例:

 

typescript

class Animal {
  name: string;

  constructor(theName: string) {
    this.name = theName;
  }

  move(distanceInMeters: number = 0) {
    console.log(`${this.name} moved ${distanceInMeters}m.`);
  }
}

class Snake extends Animal {
  constructor(name: string) {
    super(name);
  }

  move(distanceInMeters = 5) {
    console.log("Slithering...");
    super.move(distanceInMeters);
  }
}

let sam = new Snake("Sammy the Python");
sam.move(); // 输出: Slithering... Sammy the Python moved 5m.
6. 泛型(Generics)

泛型允许你编写可重用的组件,同时保持类型安全。

示例:

 

typescript

function identity<T>(arg: T): T {
  return arg;
}

let output = identity<string>("myString"); // 类型为 string
console.log(output); // 输出: myString

// 使用泛型类
class GenericNumber<T> {
  zeroValue: T;
  add: (x: T, y: T) => T;
}

let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

console.log(myGenericNumber.add(10, 20)); // 输出: 30
7. 联合类型(Union Types)与交叉类型(Intersection Types)

联合类型允许一个变量可以是多个类型之一,而交叉类型则是将多个类型合并为一个类型。

示例:

 

typescript

// 联合类型
function printId(id: number | string) {
  console.log("Your ID is: " + id);
}

printId(101); // 输出: Your ID is: 101
printId("202"); // 输出: Your ID is: 202

// 交叉类型
interface Bird {
  fly(): void;
}

interface Fish {
  swim(): void;
}

type FlyingFish = Bird & Fish;

function getSmallPet(): FlyingFish {
  return {
    fly() { console.log("Flying..."); },
    swim() { console.log("Swimming..."); }
  };
}

let pet = getSmallPet();
pet.fly(); // 输出: Flying...
pet.swim(); // 输出: Swimming...
8. 枚举(Enums)

枚举用于定义一组命名的常量。

示例:

 

typescript

enum Direction {
  Up,
  Down,
  Left,
  Right
}

let direction: Direction = Direction.Up;
console.log(direction); // 输出: 0

// 字符串枚举
enum Status {
  Pending = "PENDING",
  Completed = "COMPLETED"
}

let status: Status = Status.Pending;
console.log(status); // 输出: PENDING
9. 类型断言(Type Assertions)

类型断言允许你在特定情况下告诉编译器某个表达式的类型。

示例:

 

typescript

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
console.log(strLength); // 输出: 15

// 或者使用尖括号语法
let strLength2: number = (<string>someValue).length;
console.log(strLength2); // 输出: 15
10. 模块(Modules)

模块用于组织代码,避免命名冲突,并支持按需加载。

示例:

 

typescript

// math.ts
export function add(x: number, y: number): number {
  return x + y;
}

// main.ts
import { add } from './math';

console.log(add(1, 2)); // 输出: 3

总结

以上是 TypeScript 中的一些基础语法和常用特性,涵盖了基本类型、变量声明、函数、接口、类、泛型、联合类型、交叉类型、枚举、类型断言和模块等内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路飞VS草帽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值