TypeScript 基础语法是什么样的?

TypeScript 是一种由微软开发的静态类型编程语言,它可以作为 JavaScript 的超集使用,并且可以在编译时进行类型检查。TypeScript 提供了更强大的工具和功能,使开发者能够更轻松地编写可维护、可扩展的代码。本文将详细介绍 TypeScript 基础语法的各个方面,让您能够快速上手 TypeScript 开发。

变量声明

在 TypeScript 中,可以使用 letconst 关键字来声明变量。与 JavaScript 不同,TypeScript 还引入了 var 关键字,但通常建议使用 letconst 来声明变量。

  • 使用 let 声明的变量可以被重新赋值,而且只在块级作用域内有效。
  • 使用 const 声明的变量是常量,不可被重新赋值,而且只在块级作用域内有效。

例如:

let x: number = 10;
const y: string = "Hello";

基本数据类型

TypeScript 支持与 JavaScript 相同的基本数据类型,包括 numberstringbooleannullundefinedsymbol

此外,TypeScript 还引入了一些新的数据类型,如 anyvoidneverunknown

  • any 类型表示可以是任意类型的值,它与 JavaScript 的动态类型类似。
  • void 类型表示没有返回值的函数。
  • never 类型表示永远不会有返回值的函数或者总是会抛出异常的表达式。
  • unknown 类型表示未知类型的值,它比 any 更加严格。

例如:

let num: number = 123;
let str: string = "Hello";
let isTrue: boolean = true;
let nothing: null = null;
let undef: undefined = undefined;
let someValue: any = 42;
let result: void = undefined;
let error: never = (function () {
    
     throw new Error("Error"); })();
let unknownValue: unknown = "Unknown";

函数

在 TypeScript 中,可以使用 function 关键字来定义函数。函数可以指定参数类型和返回值类型。

例如:

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

除了普通函数外,TypeScript 还支持箭头函数的写法:

const multiply = (x: number, y: number): number => {
    
    
  return x * y;
};

TypeScript 是面向对象的编程语言,支持类的定义和继承。可以使用 class 关键字来定义类,并使用 extends 关键字来实现继承。

例如:

class Animal {
    
    
  name: string;

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

  sayHello(): void {
    
    
    console.log(`Hello, I'm ${
      
      this.name}`);
  }
}

class Dog extends Animal {
    
    
  breed: string;

  constructor(name: string, breed: string) {
    
    
    super(name);
    this.breed = breed;
  }

  bark(): void {
    
    
    console.log("Woof!");
  }
}

const myDog = new Dog("Max", "Labrador");
myDog.sayHello(); // 输出:Hello, I'm Max
myDog.bark(); // 输出:Woof!

接口

接口是 TypeScript 中用来定义对象的结构和类型的一种机制。可以使用 interface 关键字来定义接口。

例如:

interface Person {
    
    
  name: string;
  age: number;
}

function greet(person: Person): void {
    
    
  console.log(`Hello, ${
      
      person.name}! You are ${
      
      person.age} years old.`);
}

const john: Person = {
    
     name: "John", age: 25 };
greet(john); // 输出:Hello, John! You are 25 years old.

接口还可以包含可选属性和只读属性,以及支持函数类型和索引签名等高级特性。

泛型

泛型是 TypeScript 中一种强大的类型系统功能,它可以在编译时实现类型安全的参数化类型。

例如:

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

const result1 = identity<string>("Hello"); // 类型推断为 string
const result2 = identity<number>(42); // 类型推断为 number

泛型还可以应用于类、接口和类型别名等各个方面,使得代码更加灵活和可重用。

模块

TypeScript 支持模块化的开发方式,可以将代码组织成多个模块,并使用 exportimport 关键字来导出和导入模块。

例如:

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

// app.ts
import {
    
     add } from "./math";
console.log(add(1, 2)); // 输出:3

模块化的开发方式可以提高代码的可维护性和可复用性,同时也能避免命名冲突和全局变量污染的问题。

类型推断

TypeScript 具有强大的类型推断能力,它能够根据上下文自动推断出变量或表达式的类型。

例如:

let x = 10; // 类型推断为 number
let str = "Hello"; // 类型推断为 string

function multiply(x: number, y: number) {
    
    
  return x * y; // 类型推断为 number
}

const result = multiply(2, 3); // 类型推断为 number

类型推断可以减少代码中的冗余,提高开发效率。

类型断言

类型断言是一种告诉编译器某个值的类型的方式。可以使用 <类型> 或者 值 as 类型 的语法进行类型断言。

例如:

let someValue: unknown = "Hello";
let strLength1: number = (<string>someValue).length;
let strLength2: number = (someValue as string).length;

类型断言可以用于解决一些类型检查器无法确定的情况,但要谨慎使用,以避免类型错误。

装饰器

装饰器是一种用来修改类、方法、属性或参数的声明的元编程特性。可以使用 @装饰器名称 的语法将装饰器应用到对应的声明上。

例如:

function log(target: any, key: string, descriptor: PropertyDescriptor) {
    
    
  const originalMethod = descriptor.value;

  descriptor.value = function (...args: any[]) {
    
    
    console.log(`Calling ${
      
      key} with arguments: ${
      
      args}`);
    const result = originalMethod.apply(this, args);
    console.log(`${
      
      key} returned: ${
      
      result}`);
    return result;
  };

  return descriptor;
}

class Calculator {
    
    
  @log
  add(x: number, y: number): number {
    
    
    return x + y;
  }
}

const calculator = new Calculator();
calculator.add(2, 3); // 输出:Calling add with arguments: 2,3  /n add returned: 5

装饰器可以用于实现日志记录、性能分析、权限验证等各种功能,扩展了 TypeScript 的灵活性和可扩展性。

总结

本文详细介绍了 TypeScript 的基础语法,包括变量声明、基本数据类型、函数、类、接口、泛型、模块、类型推断、类型断言和装饰器等方面。TypeScript 提供了更加丰富的功能和工具,使得开发者可以更轻松地编写可维护、可扩展的代码。

猜你喜欢

转载自blog.csdn.net/weixin_43025343/article/details/131836977