TypeScript(一)基础数据类型

124 阅读2分钟

基础类型

数字类型 number

数字类型 number 用来表示整数和浮点数

let x: number = 0b1010;
let y: number = 123;

字符串类型 string

字符串类型 string 用来表示字符串

let x: string = "rinvay";
let y: string = `你好👋,我是${x}`;

布尔类型 boolean

布尔类型 boolean 表示逻辑值:true 和 false。

let flag: boolean = true;

对象类型 object

object 类型包含了所有对象、数组和函数。

let x: object = { name: "rinvay" };
let y: object = [1, 2, 3];
let z: object = () => {};

类型 undefined 和 null

undefinednull 类型分别表示 undefinednull 值。

let x: undefined = undefined;
let y: null = null;

类型 symbol

类型 symbol 表示所有的 Symbol

let x: symbol = Symbol();

类型 bigint

类型 bigint 表示任意大的整数,和 number 类型不兼容。

let x: bigint = 123n;

let y: bigint = 123; // error 不能将类型“number”分配给类型“bigint”

任意类型 any

声明为 any 的变量可以赋予任意类型的值。

let x: any;

x = 123;
x = "rinvay";

类型 unknown

声明为 unknown 的变量可以赋予任意类型的值,这一点和 any 相同。 不同的是 声明为 unknown 的变量不能直接赋值给其他变量(除 any、unknown 类型)。

let x: unknown;

x = true;
x = "rinvay";

let y: number = x; // error 不能直接赋值给其他变量

类型 never

never 是其它类型(包括 nullundefined)的子类型,代表从不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值。

let x: never;
let y: number;

let fn = () => {
  throw new Error("exception");
};

x = 123; // error 不能将类型“number”分配给类型“never”

x = fn();
y = fn();

let error = (message: string): never => {
  throw new Error(message);
};

联合类型

联合类型(Union Types)可以通过管道 | 将变量设置多种类型,赋值时可以根据设置的类型来赋值。

let x: string | number;

x = 123;
x = "rinvay";

x = true; // error 不能将类型“boolean”分配给类型“string | number”

交叉类型

交叉类型(Intersection Types)是一种可以组合多个类型的方式。它允许您将多个类型通过 & 合并为一个类型,其中每个类型都适用于该类型的属性或方法。

type TypeC = TypeA & TypeB;

示例

type Person = {
  name: string;
  age: number;
};

type Employee = {
  company: string;
  salary: number;
};

type PersonAndEmployee = Person & Employee;

const employee: PersonAndEmployee = {
  name: "rinvay",
  age: 18,
  company: "beisen",
  salary: 1000,000,
};