TypeScript学习-基础类型

本文介绍了TypeScript的基本类型,包括布尔、数字、字符串、数组、元组、枚举、any、unknown、void、null、undefined以及never。强调了any和unknown的区别,以及void和never的特殊用法。还讨论了类型等级和它们之间的关系。
摘要由CSDN通过智能技术生成
/***
 * ts基础类型
 * boolean number string array tuple enum any unknown void null undefined never object 
 */

let bool:boolean = false  //布尔
let num:number = 123 
let str:string = 'Hi'

let arr1:number[] = [1,23,4]  //数组定义方法1
let arr2:Array<string> = ['hah','ou']//数组定义方法2

// tuple 元组 【表示一个已知元素数量和类型的数组 】
let tup:[number,string] 
tup = [1,'数量和类型必须和定义的表示一致']
console.log(tup[0],"元组的打印");
// 元组是允许越界定义的:当访问一个越界的元素,会使用联合类型替代
// tup[4] = 'wowowo'
// console.log(tup[4],"--元组越界");
// tup[3] = false //ERROR 布尔值不在之前定义的类型中

// eum 枚举类型
enum Color {
    red,green,blue
}
console.log(Color.red,":枚举类型");
console.log(Color[0],":枚举类型");

// 可以手动给枚举类型赋值序号
enum Color2 {
    red=0,green = 5,blue
}
console.log(Color2,"给color2赋值");


// any表示任意类型,定义一个不确定类型的变量
let a:any 
a='你好'
a=123
// 定义内容为any类型数组
let arr3:any[] = ['nihao',11111,false]
// 定义内容为any类型的元组
let tup1:[any] =['hahah']
tup1[0]  = 1 //可以随意修改元组/数组内容类型
tup1[0]  = false

// unknown 所有类型都可以分配给unknown
let k:unknown = "nihao"
// let s:string = k //不能将类型“unknown”分配给类型“string”
// 区别1:unknown类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
// 区别2:如果是any类型在对象没有这个属性的时候还在获取是不会报错的
let obj:any = {aa:1}
obj.bb //不会报错
let obj1:unknown = {aa:123}
// obj1.bb //报错


// 区别3:如果是unknow 是不能调用属性和方法
let obj2:unknown = {aa:12,bb:():number=>123}
// obj2.aa //“obj2”的类型为“未知”
// obj2.bb() // “obj2”的类型为“未知”



// Void 和any相反,表示没有任何类型,比如在一个没有返回值的函数:
function consoleWarn(txt:string):void{
    console.warn("警告:",txt)
}
consoleWarn('这是一个没有返回值的函数')
let v:void
// v  = 'nihao' //错误 
// void类型只能赋值null和undefined
// v=null
v= undefined

// Null 和 Undefined
// ts中null和undefined都有自己的类型 null 和 undefined
// 默认情况下null和undefined是所有类型的子类型,意思是可以把该类型赋值给number类型的变量
// 注意【当ts配置中--strictNullChecks标记是开启的,那null和undefined只能赋值给void和它们各自】

// never类型 表示永远不存在的值,例如死循环、抛出异常
function error(params:string):never {
    throw new Error(params)
}
// 推断的返回值类型为never function fail(): never
function fail() {
    return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}

// object表示非原始类型


/**
 * TODO:总结
 * 类型的等级
 * 1:any和unknown是ts的顶级类型
 * 2:object
 * 3:Number,String...  大写的类型
 * 4:number、string...
 * 5:never
 *
 * 不能给never类型赋值任何类型
 * 
 * 
 * any和unknown区别
 * 1-unknown不能作为子类型赋值、any可以做子类型也可以做父类型
 * 2-any定义对象,引用对象上没有的属性时不会报错,unknown会报错
 * 3-unknown定义对象,不能引用对象的属性和方法
 * 
 */








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值