typescript学习笔记-基本类型声明

ts的类型

类型 例子 描述
number 1 -33,2.5 任意数字
string “hi” “hello” 任意字符串
boolean true/false 布尔值true或false
object { name:“孙悟空”} 任意js对象
array [1,12,345] 任意js数组
tuple [1,12] 元素,TS新增类型,固定长度数组
enum enum { A,B } 枚举、TS中新增类型
自变量 其本身 限制变量的值就是该字面量的值
any * 任意类型
unknown * 类型安全的any
void 空值(undefined) 没有值(或undefined)
never 没有值 不是任何值

类型复合

使用 | 来链接多个类型,表示只需要满足其中之一的条件就行了

// "100" 就是字面量 
// | 就是或的意思
let a: "100" | "222"
let a: string | number

使用 & 表示 与 ,表示多个条件都要满足。

let j: {name:string} & {age: number}
j = {name: "孙悟空",age: 1}

type 类型的别名

相当给 类型 或复合类型 取个别名
相当于自己定义一个类型 这个类型是类型的集合

type myType = string | number | 3

let sss: myType

类型转换

let a:unknown

a=111
a="45"
a=true

let b:string
b= "hello"
a = b

// 报错 因为 b是广泛类型 赋值给 窄类型 
// b=a

// 解决报错方式一 可以手动加判断 
if(typeof a =="string") {
	b=a
}

// 解决报错方式二 这里相当于使用as 将unknow的范围缩小的
b = a as string;
// 解决报错方式三 这种写法和上面的是一样的
b = <string>a;

void 类型

void 用来表示空,以函数为例,就表示没有返回值的函数

// void 指返回为空 返回只能是下面的两种 不能是 return null
function fn(): void {
	return
}
function fn2(): void {
	return undefined
}
// 这个会报错
function fn3(): void {
	return null
}

never类型

never 表示永远不会返回结果

// 只有下面抛出错误才行 
function fnn(): never {
	throw new Error("")
}
// 报错 不能将类型“undefined”分配给类型“never”。
// return null 依旧报错 说明不能有return 同时必须抛出错误
function fnn2(): never {
	return 
}

object 对象的类型声明

{} 用来指定对象中可以包含哪些属性
语法:{属性名:属性值,属性名:属性值}
在属性名后面加上?,表示属性是可选的

一、基本限制

let bb :{
    name: string,
    age: number
}
// 赋值错误  不能缺少类型中定义了的值
// 类型 "{ name: string; }" 中缺少属性 "age",但类型 "{ name: string; age: number; }" 中需要该属性。
bb = {
    name: "John"
}
// 赋值错误 不能多赋值定义对象类型外的属性
// 不能将类型“{ name: string; age: number; sss: string; }”分配给类型“{ name: string; age: number; }”。
//   对象字面量只能指定已知属性,并且“sss”不在类型“{ name: string; age: number; }”中。
bb = {
    name: "John",
    age: 18,
    sss: "ss"
}

二、属性名后面加上?,表示属性是可选的

let aa : {
    name: string,
    // 这里的? 表示 赋值的时候可以有这个属性 也可以没有
    age?: number
}
aa = {
    name: "John"
}

三、统一设置对象属性类型

let aa : {
    name: string,
    // 这里的? 表示 赋值的时候可以有这个属性 也可以没有
    age?: number,
    // 因为不可能所有属性都去加? 工作量过大,所以使用下面的方式来 统一设置
    [propName:string]: any
}

aa = {
    name: "John",
    sss: ""
}

function 函数的类型声明

设置函数结构的类型声明
语法: (形参:类型,形参:类型) => 返回值

let fuss : (a:string,b:number)=>string
fuss =function(a,b) {
    return "ss"
}

array 数组类型声明

数组的类型声明:
类型[]
Array<类型>

let  f : string[]
let g : Array<string>

tuple 元组类型声明

元组,元组就是固定长度的数组
语法:[类型,类型,类型,类型…]

let tuple : [string,string,number]
// 报错=》 不满足声明元组的数量
tuple = ["12"]

// 报错=》 多了也不行
tuple = ["12","ss",44,ss]

enum 枚举类型声明

指在多个值直接选择时候,适合使用枚举。

enum 性别 {= 1,= 2,
    公公= 3 

}

let pension : {
    name: string,
    age: number
}
pension = {
    name: "Pension",
    age: 性别.公公
}

你可能感兴趣的:(typescript,学习,javascript)