typescript基本类型

70 阅读1分钟

基本类型

1. number

表示所有数字类型,包括整数和浮点数。

let age: number = 25;
let pi: number = 3.14;

2. string

表示文本数据。

let name: string = "Alice";
let greeting: string = `Hello, ${name}`;

3. boolean

表示布尔值:true 或 false。

let isDone: boolean = false;

4. array

表示元素类型相同的数组。

let numbers: number[] = [1, 2, 3, 4, 5];
let strings: Array<string> = ["one", "two", "three"];

5. tuple

表示已知元素数量和类型的数组。

let tuple: [string, number];
tuple = ["hello", 10];

6. enum

表示枚举类型,定义一组命名常量。

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

7. any

表示任意类型,通常用于动态内容。

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

8. void

表示没有任何类型,通常用于函数没有返回值的情况。

function warnUser(): void {
  console.log("This is a warning message");
}

9. null 和 undefined

表示空值和未定义值。

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

10. object

表示非原始类型,即除 number,string,boolean,symbol,null 或 undefined 之外的类型。

let obj: object = { name: "Alice", age: 25 };

类型断言

类型断言用于手动指定一个值的类型。

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

联合类型和交叉类型

联合类型

联合类型表示一个值可以是几种类型之一。

let value: string | number;
value = "hello";
value = 42;

交叉类型

交叉类型表示将多个类型合并为一个类型。

interface A {
  a: string;
}
​
interface B {
  b: number;
}
​
type C = A & B;
​
let c: C = { a: "hello", b: 42 };

类型别名

类型别名用于为类型创建新名称。

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
​
function getName(n: NameOrResolver): Name {
  if (typeof n === "string") {
    return n;
  } else {
    return n();
  }
}

函数

可以为函数的参数和返回值定义类型。

function add(x: number, y: number): number {
  return x + y;
}
​
let myAdd: (x: number, y: number) => number = function (x: number, y: number): number {
  return x + y;
};

接口

接口用于定义对象的类型。

interface Person {
  name: string;
  age: number;
}
​
let user: Person = {
  name: "John",
  age: 30,
};

TypeScript 支持面向对象编程,包括类、继承和修饰符。

class Animal {
  name: string;
​
  constructor(name: string) {
    this.name = name;
  }
​
  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m.`);
  }
}
​
class Dog extends Animal {
  bark() {
    console.log("Woof! Woof!");
  }
}
​
let dog = new Dog("Rex");
dog.bark();
dog.move(10);

泛型

泛型用于创建可重用的组件,支持多种类型。

function identity<T>(arg: T): T {
  return arg;
}
​
let output1 = identity<string>("myString");
let output2 = identity<number>(100);