ts的那些事

118 阅读2分钟

最后更新时间:2023-05-18 13-52-26

  1. 官方文档
  2. github 中文仓库指南
  3. 中文文档
npm install -g typescript

ts 类型

基本类型

booleannumberstringvoid(表示没有任何返回值的函数)、nullundefined
  1. 声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null
  1. undefined 和 null 是所有类型的子类型
  1. symbol 表示唯一的、不可变的值,通常用作对象的属性名。

复合类型

array、tuple、objectenumanyunknownnever
  1. unknown 类型,表示一个值的类型是未知 与 any 类型不同,unknown 类型是类型安全的。
  1. unknown 与 any 的区别
any:表示任意类型,使用any可以跳过类型检查
unknown:表示不确定的类型, 需要进行类型检查

高级类型

unionintersection、type、interface、class、function
interface
  1. 定义接口的关键字,通过定义接口,规范数据类型,函数签名等形式
// 定义接口 FormState, 该接口包含三个字段
interface FormState {
  username: string;
  password: string;
  remember: boolean;
}
class
class Product {
  name: string;
  price: number;
}
enum
  1. 一种用于定义一组常量的数据类型,这些成员的值默认从 0 开始自动递增,也可以手动指定值
// 默认值从0开始
enum Color {
  Red,
  Green,
  Blue,
}

// 手动指定值
enum Api {
  ACCOUNT_INFO = '/account/getAccountInfo',
  SESSION_TIMEOUT = '/user/sessionTimeout',
  TOKEN_EXPIRED = '/user/tokenExpired',
}
元组
  1. 数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象
泛型
  1. 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。

其他类型

Promise 类型
  1. Promise 表示一个异步操作,该操作最终会产生类型为 T 的值。T 是一个类型参数,表示异步操作返回的值的类型。
function fetchData(): Promise<string> {
  return new Promise((resolve, reject) => {
    // 异步操作
    // 如果操作成功,调用 resolve(value) 返回结果
    // 如果操作失败,调用 reject(error) 返回错误
  });
}
& 交叉类型
  1. 交叉类型的特点是,它将多个类型的成员合并到一个类型中
interface Dog {
  breed: string;
  bark(): void;
}

interface Cat {
  breed: string;
  meow(): void;
}

type DogCat = Dog & Cat;

const pet: DogCat = {
  breed: "Mixed",
  bark() {
    console.log("Woof!");
  },
  meow() {
    console.log("Meow!");
  },
};

type

  1. 创建类型别名的关键字 类型别名允许你为一个类型起一个新的名字
interface Dog {
  breed: string;
  bark(): void;
}

interface Cat {
  breed: string;
  meow(): void;
}

type DogCat = Dog & Cat;

as 运算符

  1. 类型断言运算符,用于将一个表达式的类型指定为特定的类型

| 运算符

  1. 联合类型运算符
  2. 当一个变量被设置为联合类型时候,只能访问联合类型的所有类型里共有的属性或方法

函数

函数表达式