TypeScript学习实战-类型断言

521 阅读2分钟

前言

前面更文通过学习 TS 的类型/枚举/函数/类/泛型等,基本类型,其他类型和高级类型 已经对TS有了初步的熟悉, 其中有和 JS 中并存的知识点, 也有相对 JS没有的, 本文来学习 TS 重要知识点 -- 类型断言

现在 TypeScript + Vue3 应用挺广了, 如果不学习总感觉跟不上大厂的节奏. 学习 TypeScript(虽然觉得也是可选的,但还是要学,真卷...) 这里有记录学习 TypeScript 的过程, 收录在 TypeScript 实战专栏

Typescript 中文文档 & 源码

Typescript 官网地址: typescriptlang.org/zh/

Typescript 中文文档:类型断言

TypeScript 类型断言

interface IPerson { 
  name: string; 
  age: number; 
} 
let person = {} as IPerson; 
person.name = 'xn213'
person.age = 21

请慎重使用 类型断言. 因为我们的原因, 为了书写方便, 会强制把一个类型断言会造成 TypeScript 丧失代码提示的功能.

类型断言是有强制性, 但也并不是万能的, 如下面的情况下也会报错:

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

let person = '这是一个字符串 string 而非对象' as Person; // Error

这个时候会报错, 很显然不能把 string 强制断言为一个接口 Person, 怎么处理呢? 当然可以使用双重断言来解决: 但是看起来很傻瓜式, 有没有!

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

let person = '这是一个字符串 string 而非对象' as any as Person; // √

将一个字符串断言为 any, 然后就可以断言成接口类型(interface).. (ps: 所以这个有必要吗很鸡肋..知道了解就好..)

Vue3 学习实战系列更文:

  1. Vue3 源码学习-工具函数 utils(二)
  2. Vue3-初体验,
  3. Vue3-生命周期setup()函数,
  4. Vue3-computed & watch,
  5. Vue3-Teleport 改变组件挂载的根节点,
  6. Vue3-Suspense 处理异步请求,
  7. Vue3-defAsyncComponent 异步组件(新增),
  8. Vue3-fragments (新增),
  9. Vue3-v-model (非兼容),
  1. TypeScript 系列: