//! 基础类型声明,(相比js 变量名多加了一个类型修饰)
//? 数值
let num:number = 0
//? 布尔值
let flag:boolean = false
//? 字符串
let str: string = ‘’
//? 数组
/*
数组:有两种方式定义
1、修饰符(元素的类型)后面直接加中括号
2、修饰符(数据类型)加尖括号(元素类型),又被称为数组泛型
*/
const list:number[] = [1,2]
const list1:Array = [‘a’]
//? 元组:特殊的数组,已知元素数量和类型
const list3:[number,string] = [1,‘2’]
// ? 枚举
/*
1、枚举值初始化(赋值),返回初始化值;否则返回索引(以0位起始)
2、初始化:如果枚举值初始化赋值为数值,后续枚举值会自动递增
3、如果初始化为非数字,必须每一个枚举值都要赋值
*/
enum type {red=9,yellow,green}
let r:type = type.red
let y:type = type.yellow
let g:type = type.green
// console.log('r :>> ', r);
// console.log('y :>> ', y);
// console.log('g :>> ', g);
//? Any 未知的变量类型
let a:any = undefined
//? Void
/*
1、表示没有任何类型(鸡肋 无用),只能声明undefine;null
2、函数无返回值时用void
*/
function test():void{
console.log('haha :>> ', ‘haha’);
}
// test()
//? undefine,null 没啥用,但是可以赋值给其他所有类型
let arr:any[] = null
let str3:string = undefined
//? Never 永不存在的值的类型
//? Object 非原始类型
const obj:Object = {}
// ? 类型断言的两种方式
let someval:any = ‘qwe’
// let strLen:number = (someval).length
let strLen:number = (someval as string).length
// 总结
/*
ts只是在js的基础上,在变量之前加了类型修饰符。明确变量的类型,让js从弱类型语言变为强类型。
增加了元组,枚举,断言 的概念
*/