1.TS初探之类型声明初探

ts线上编辑器,刚接触胸弟可以用用,挺方便

1.类型声明

/*
    ts 类型声明
    boolean,number,string,symbol,array
 */

let booleans: boolean;
booleans = true;
console.log(booleans)

let numbers: number;
numbers = 1;
numbers = 123;
console.log(numbers)

let strings: string;
strings = '123'
console.log(strings)

let symbols = Symbol();
let obj = {
    [symbols]: '我是es6新增类型symbol'
}
console.log(obj[symbols])//"我是es6新增类型symbol" 

let arrays: number[];
arrays = [1, 2, 3, 4]
console.log(arrays)// [1, 2, 3, 4] 

let arrays2: Array<number>;
arrays2 = [1, 2, 3, 4]
console.log('arrays2',arrays2)//"arrays2",  [1, 2, 3, 4] 
arrays2=1//Type 'number' is not assignable to type 'number[]'.

注意:如果修改不同类型的值时会提示:(此时报错提示是因为arrays2=1)
Type ‘number’ is not assignable to type ‘number[]’.(因为此时arrays2定义的类型发生改变),提示的意思大概是类型number不能设置给类型number

2.数组(Array)与元组(Tuple)定义

第一种情况:数组数据类型一样

第一种方式 Array< number >

let arr:Array<number>=[1,2,3,4,5]
console.log(arr)//[1,2,3,4,5]

第二种方式 string[]

let arr2:string[]=['1','2','3']

第二种情况:数组数据类型不一样
联合行声明数组 let arr3:(number|string)[]

let arr3:(number|string)[]=[1,'2','嗷嗷嗷']
console.log(arr3)//[1,'2','嗷嗷嗷']

第三种情况:自由组合类型数组
any[] (在 TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的顶级类型 (也被称作全局超级类型))

let arr4:any[];
console.log(arr4=[1,true,'blur',null])//[1, true, "blur", null] 

第四种情况:严格限制长度和类型的元组数组
元组类型:[number,string,boolean]
注:借用菜鸟教程的话:
我们知道数组中元素的数据类型都一般是相同的(any[] 类型的数组可以不同),如果存储的元素数据类型不同,则需要使用元组。
元组中允许存储不同类型的元素,元组可以作为参数传递给函数。
创建元组的语法格式如下:

var tuple_name = [value1,value2,value3,…value n]

实例

let myz=[string,number,boolean]
//表示定义一个元组,这个元祖中将来可以存储3个元素, 第一个元素必须是字符串类型, 第二个元素必须是数字类型, 第三个元素必须是布尔类型
//或者定义一个空的元组
let myz1=[]

元组可以当成数组直接使用,可能是叫法不一样。我们依旧可以使用通过索引的方式来获取值,当然push和pop方法依旧能够使用

3.Any类型在 TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的顶级类型(也被称作全局超级类型)

其实Any类型应该提前做记录的
Any类型

let strings:boolean=true
let arrs: any = 'dsadsadsa'
arrs = 1
arrs = Symbol();
arrs = strings
console.log('我是超级类型any', arrs)//true

使⽤ any 类型,可以很容易地编写类型正确但在运⾏时有问题的代码。如
果我们使⽤ any 类型,就⽆法使⽤ TypeScript 提供的⼤量的保护机制。为了解决 any 带来的问题,
TypeScript 3.0 引⼊了 unknown 类型

unknown 类型

let arrs2:string='hellow'
let arrs : unknown = '我是超级类型any'
arrs = arrs2//
arrs2=arrs//Error Cannot assign to 'strings' because it is a constant
console.log('我是超级类型unknown', arrs2)

就像所有类型都可以赋值给 any ,所有类型也都可以赋值给 unknown,unknown 类型只能被赋值给 any 类型和 unknown 类型本身

void类型
void用来表示为空,以函数为例,它代表着没有返回值的函数

function fn() :void{
	return;
}

Never类型
never 类型表示的是那些永不存在的值的类型。 例如, never 类型是那些总是会抛出异常或根本就不
会有返回值的函数表达式或箭头函数表达式的返回值类型。

function fn() :never{
	 throw new Error('出错了')
}

object与{}类型

//object代表一个js对象
let a:object
a=function(){}
a={}
{}//用来指定对象中包含哪些属性
//语法 {属性名:string,age?:number}
//在属性后面加?,表示属性可选
let b: { name: string, age?: number }
b = {name:'张三',age:12}
console.log(b)//{name:'张三',age:12}
//当然 你也可以选择不传age
b={name:'张三'}
console.log(b)//{name:'张三'}

对象接收多个参数怎么写?
注意:[xxx:string]:any 表示任意类型

let c:{name:string,[a:string]:any}
c={name:'李四',age:12,total:20}
console.log('c',c)

Function类型

//设置函数类型结构类型声明  语法:(形参:类型,形参:类型,...)
let fn: (a: number, b: number) => number
fn = function (a: number, b: number): number {
    return a + b
}
console.log('fn',fn(1,2))//3
//当然我们也可以通过指定类型传入我们想要类型的参数
let fn: (a: string, b: number) => any
fn = function (a: string, b: number): any{
    return a + b
}
console.log('fn',fn('1',2))//'12'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值