TypeScript相关知识点整理_实用类型

55 阅读1分钟

实用类型 Utility Types

实用类型说明

  • 实用类型是仅在开发过程中使用的TS提供的一系列辅助类型
  • TS为编译时语法,因此 此实用类型 无法在JS运行时生效

常用实用类型

Partial

  • 可以将已有对象结构的属性全部设置为 可选属性
  • 使用在 定义之初 无法确定具体结构的对象上
  • 区别于 直接使用 any 或者 object,这两种类型无有效类型提示。而采用Partial的泛型传参,可以得到有效的结构提示
interface OptionSome {
  name: string;
  age: number;
}

function getPerson(obj: OptionSome): OptionSome {
  let _obj: Partial<OptionSome> = {};  //Partial暂时声明类型为可选
  if (obj.name != "Nicky") {
    //在键入_obj的时候可以得到关于OptionSome结构的提示,尽管Partial此时已经将属性转为可选
    _obj.name = obj.name;
  } 
  else {
    _obj.name = "NoName";
  }
  _obj.age = obj.age;
  return _obj as OptionSome;  //断言表示逻辑处理中确保实现此结构
}

Readonly

  • 使已有的对象结构赋值后不可再更改
  • 对比const只能固定基础类型,引用类型依旧会改变;Readonly类型的对象结构初次赋值后始终不会改变
interface OptionSome {
    name: string;
    age: number;
  }
const person: OptionSome = {
  name: "Jack",
  age: 25,
};
person.name = "Nicky"; // 被更改了

const person2: Readonly<OptionSome> = {
  name: "Jack",
  age: 25,
};
person2.name = 'Nicky'; //error