TS学习二 类型声明

TS 中 类型

任何声明的值 设置了 类型(type),如果重新赋不同类型的值就会报错,虽然会编译,那使用 TS 将没有意义

string 字符串类型

// string 字符串类型
let myname: string = "文本"
console.log(myname)
myname = 123  // 报错 =>  赋值类型 不一样 

 number 数字类型   

// number 数字类型   

function sum1(a1: number, b1: number) {
  return a1 + b1
}
// 返回值也可以设置数字类型
function sum(a: number, b: number): number {
  return a + b
}
const c = sum(1, 3)

boolean 布尔类型

//boolean 布尔类型

let zt: boolean = false
zt = true

// 指定多个类型  用 | (或) 隔开 
let d: boolean | string // 只能是 布尔 或 字符串
let e: boolean | string | number
e= true
e=123
e='456'
e = [1,2,3] // => 报错

any 表示 任意类型

// any 表示 任意类型

// 不建议使用 any  =>  相当于对该变量关闭 TS 的类型检测

// any 可以赋值给任意变量

let f //隐式   等同于=>    let f:any
f = 11
f=[1]
f='123'
f = {obj:{}}

unknown  未知类型()  => 我们不知道它是什么类型

// unknown  未知类型()  => 我们不知道它是什么类型

// unknown 就是类型安全的 any

// unknown 类型的变量,不能直接赋值给其他变量

let weizhi: unknown
weizhi = 10
weizhi = "字符串"
weizhi = true

let zt = true
// zt为boolean类型,weizhi为unknown类型
zt = weizhi // 报错 => (不能将类型“unknown”分配给类型“boolean” )

 void 表示 空 类型

//  void 表示 空 类型

// 以函数为例  没有返回值的函数

function fn(): void {
  // return 123  // 报错=> 返回 其他 类型 就会报错
  return undefined // undefined  没有值  不会报错
}

never 表示 永远不会返回结果

// never 表示 永远不会返回结果

// 没有值

function fn1(): never {
  throw new Error("报错了")
}

object 表示 对象 类型

// object 表示 对象 类型

// {}  用来指定 对象中包含那些属性

// 语法:  {属性名:属性值,属性名:属性值}

let ob: object = {}
let ob1: { name: string }
// ob1 = {}  // 报错 => ob1 对象里面 必须有一个 name 属性,值为字符串
ob1 = { name: "玉皇大帝" }
ob1 = { name: "玉皇大帝1", age: 18 } // => 报错 声明的时候 只设置一个 name属性值为字符串

let ob2: { name: string; age: number }
ob2 = { name: "孙悟空" } // =>报错 声明的时候 必须有两个属性值 一个name为string,一个age为number

// 在属性后面 加一个 ?   表示 这个属性是可选的
let ob3: { name: string; age?: number }
ob3 = { name: "善财童子" }
ob3 = { name: "善财童子", age: 18 }

// [propName:string] => 任意属性名
// any => 任意类型
// [propName:string]:any  =>  任意类型的属性和值  => any 可换成 其他类型 来限制值
// [propName:string]:number => 任意属性 只能 是 number
let ob4: { name: string; [propName: string]: any }
ob4 = { name: "猪八戒", age: 18, show: true }

array 表示 数组 类型

let arr: string[] // => arr 表示 字符串数组

arr = [123, true, "小龙"] // => 报错 =>  arr 是一个数组 里面存放的都是 字符串
arr = ["123", "小龙"]

let arr1: number[] // => arr1 表示 数字数组

arr1 = [1, false, "小龙"] // => 报错 =>  arr 是一个数组 里面存放的都是 数字
arr1 = [1, 2, 3]

 tuple  => 元组  => 就是 固定 长度的 数组 => 固定长度数组

// tuple  => 元组  => 就是 固定 长度的 数组 => 固定长度数组

// 语法: [类型,类型,类型]

let arr2: [string, string]
arr2 = ["hello", "你好", "文本"] // => 报错 => arr2 类型 设置了 只能传 两个 字符串
arr2 = ["你好", "123"]

let arr3: [string, number]
arr3 = ["你好", 123]

 enum 枚举

// enum 枚举 
// male => 女  female => 男

enum Gender {
  male = 0,
  female = 1,
}

let i: { name: string; gender: Gender }
i = { name: "孙悟空", gender: Gender.male }

 & 表示 同时

let j: { name: string } & { age: number }

j = { name: "小三", age: 18 }

类型的别名

ype myType = string // => myType 为 string 的别名  => myType 为自定义的

let g: myType //  g 为 字符串类型

// 例  => 简化 类型的使用

// let k : 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
// let p : 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

type kType = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
let k: kType
let p: kType

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值