Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

    • 基础

      • TypeScript介绍
      • TypeScript基础类型
      • TypeScript对象类型
      • TyprScript类型推论
        • TyprScript类型推论
          • 类型推论
          • 类型断言
      • TypeScript高级类型
      • TypeScript接口
      • TypeScript类型别名与接口的区别
      • TypeScript泛型
      • TypeScript项目配置
    • 实例

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • TypeScript
  • 基础
HiuZing
2022-09-27
目录

TyprScript类型推论

# TyprScript类型推论

# 类型推论

某些地方类型注解可以省略不写,TS的类型推论机制会帮助提供类型 常见场景:

1.声明变量并初始化时

2.决定函数返回值时

如果没有明确的指定类型,那么 TypeScript 会依照类型推论的规则推断出一个类型

我们没有给 x 指定明确类型的时候,typescript 会推断出 x 的类型是 number

let x = 1;
x = true; // 报错
1
2

而如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查:

声明变量并立即初始化值,此时可以省略类型注解 注意:如果声明变量但没有立即初始化值,此时必须手动添加类型注解

let x;
x = 1; // 编译正确
x = true; // 编译正确
1
2
3

# 类型断言

我们可能比typescript更加清楚的知道某个变量的类型,所以我们可能希望手动指定一个值的类型

  • 尖括号写法

    let str: any = "to be or not to be";
    let strLength: number = (<string>str).length;
    
    1
    2
  • as 写法

    let str: any = "to be or not to be";
    let strLength: number = (str as string).length;
    
    1
    2

# 非空断言

在上下文中当类型检查器无法断定类型时,可以使用缀表达式操作符 ! 进行断言操作对象是非 null 和非 undefined 的类型,即x!的值不会为 null 或 undefined

let user: string | null | undefined;
console.log(user!.toUpperCase()); // 编译正确
console.log(user.toUpperCase()); // 错误
1
2
3

# 确定赋值断言

我们定义了变量, 没有赋值就使用,则会报错

let value:number
console.log(value); // Variable 'value' is used before being assigned.
1
2

通过 let x!: number; 确定赋值断言,TypeScript 编译器就会知道该属性会被明确地赋值

let value!:number
console.log(value); // undefined 编译正确
1
2

# any临时断言

window.abc = 123
//这样写会报错因为window没有abc这个东西

(window as any).abc = 123
//可以使用any临时断言在 any 类型的变量上,访问任何属性都是允许的。
1
2
3
4
5

具体来源 (opens new window)

#TS
上次更新: 2024/08/14, 04:14:33
TypeScript对象类型
TypeScript高级类型

← TypeScript对象类型 TypeScript高级类型→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式