本文介绍: JS 已有类型原始类型简单类型( number/string/boolean/null/undefined复杂数据类型数组对象函数等)TS 新增类型联合类型自定义类型(类型别名接口元组字面量类型枚举void

背景

JS 的类型系统存在“先天缺陷”弱类型,JS 代码中绝大部分错误都是类型错误(Uncaught TypeError开发的时候,定义变量应该就有类型 这些经常出现的错误,导致了在使用 JS 进行项目开发时,增加了找 Bug、改 Bug时间,严重影 响开发效率 。

编程语言的动静来区分,TypeScript 属于静态类型的编程语言JavaScript 属于动态类型的编程 语言

对于 TS 来说:在代码编译的时候(代码执行前)就可以发现错误(早)

  1. React: TS + Hooks
  2. Vue: TS + Vue3
    注意: Vue2 对 TS 的支持不好~
 let age = 18
 let age: number = 18  
// 错误代码:
// 错误原因:将 string 类型的值赋值给了 number 类型的变量,类型不一致
let age: number = '18'
// 写法一:
let numbers: number[] = [1, 3, 5]
// 写法二:
let strings: Array<string> = ['a', 'b', 'c']

    元组
let arr3 :[number , number,boolean]=[19,10,true]
let arr: (number | string)[] = [1, 'a', 3, 'b']
  • 解释 | (竖线)在 TS 中叫做联合类型,即:由两个多个其他类型组成的类型表示可以是这 些类型中的任意一种
  • 注意:这是 TS 中联合类型的语法,只有一根竖线,不要与 JS 中的或(|| 或)混淆
let timer: number | null = null
timer = setInterval(() => {}, 1000)
// 定义一个数组,数组中可以数字或者字符串, 需要注意 | 的优先级
let arr: (number | string)[] = [1, 'abc', 2]

let obj:{a:1}|{b:'3'}; //表示 只能是a类型 值为1 或者b 类型 值为'3'   不能有其他属性
object (常用) Object()

let num1 :object = {a:1};

let num2: object = [1];
let arr :(number | string ) []  =[1,2.3,'abc']
//联合类型:|
//注意事项:|的优先级比较低,需要用() 包裹,一旦使用联合类型
//那么他们只能用他们共有的类型

timer = setInterval(() => {}, 1000)
// 定义一个数组,数组中可以有数字或者字符串, 需要注意 | 的优先级
let arr: (number | string)[] = [1, 'abc', 2]

//灵活度高,可以随意搭配使用
//形式一:
type CustomArray = (number | string)[]
let arr1: CustomArray = [1, 'a', 3, 'b']
let arr2: CustomArray = ['x', 'y', 6, 7]
//形式二:
type custom =number | string 
let arr5:custom[]=[12,3,3,'abc']
//形式三:
type s = string
type n = number
let str :s = 'abc'
let str :n=23
// 函数声明
function add(num1: number, num2: number): number {
return num1 + num2
}
// 箭头函数
const add = (num1: number, num2: number): number => {
return num1 + num2
}
type AddFn = (num1: number, num2: number) => number
const add: AddFn = (num1, num2) => {
return num1 + num2
}

  • 相同点:都可以给对象指定类型
  • 不同点: 接口,只能为对象指定类型 类型别名,不仅可以为对象指定类型,实际上可以为任意类型指定别名

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注