Typescript的基本数据类型

本文详细介绍了TypeScript中的基本数据类型(如number、string、boolean、any、Symbol等),以及null、undefined、Array、Object、Function的使用,包括数组泛型、对象类型、函数声明与表达式、重载、元组、枚举和特殊类型void和never。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TS的基本数据类型如下:

numberany
stringvoid
booleannever
Symbol元组
null枚举enum
undefined
Array
object
Function

目录

1. number,string,boolean,any

2.Symbol

3. null,undefined

4. Array

(1)  类型[ ] 

(2) 数组泛型

5.Object

6. Function

(1) 函数声明

(2) 函数表达式

(3) 函数参数问题

(4)重载

7. 元组

8. 枚举enum

9.void

 10. never


1. number,string,boolean,any

//number
let num:number=1  //定义num必须为number
let error:number='a' //报错:不能将类型“string”分配给类型“number”

//string
let str:string='我是string'  //str必须为string
let error:string=true   //报错:不能将类型“boolean”分配给类型“string”

//boolean
let buer:boolean=true  //buer必须为boolean
let error:boolean='我是boolean类型'  //报错:不能将类型“string”分配给类型“boolean”

//any
//将数据定义为any,即表示该数据可以是任意类型
//但不建议用它,都用any了,ts就没啥用了

2.Symbol

let sbl:Symbol=Symbol()  //可以显示声明
let sb12=Symbol()   //直接创建

3. null,undefined

//给变量规定的啥类型,就是啥类型,别瞎改

let n:null=null   //正确的
let n2:null=1    //报错:不能将类型“1”分配给类型“null”
let num:number=null   //报错:不能将类型“null”分配给类型“number”


let u:undefined=undefined   //正确的
let u1:undefined='a'   //报错:不能将类型“"a"”分配给类型“undefined”
let str:string=undefined  //报错:不能将类型“undefined”分配给类型“string”

4. Array

(1)  类型[ ] 

let nrr:number[]=[1,2,3]        //nrr中的数据必须为number
let srr:string[]=['a','b','c']  //srr中的数据必须为string
let brr:boolean[]=[1,'a']       //报错:数组元素的类型与定义的不符 

(2) 数组泛型

// Array<类型>
let arr:Array<number>=[1,2,3]
let brr:Array<string>=['a','b']

5.Object

let obj:object={a:'A',b:'B'}  //正确的

//改变obj中的属性值
obj.a='C'       //标红:类型“object”上不存在属性“a”

//标红是由于,未规定obj中的a和b的类型
//故:
let obj2:{a:string,b:string}={a:'A',b:'B'}
obj2.a='C'      //不标红了

6. Function

(1) 函数声明

//1. 函数声明
// function fn(形参1:类型,形参2:类型):返回值的类型{ return xx }
function fn(x:number,y:number):number{
  return x+y     //若return的不是number,也报错
  
}
console.log(fn(1,2))   //3
console.log(fn(1))   //报错:应有 2 个参数,但获得 1 个
console.log(fn(1,2,3))   //报错:应有 2 个参数,但获得 3 个

(2) 函数表达式

//2.函数表达式
//第一种
let fn=function(x:number,y:number):number{
  return x+y
}
//第二种:非常严谨,对于fn1的形参类型和返回值类型也做了规定
let fn1:(x:number,y:number)=>number=function(x:number,y:number):number{
  return x+y
}
//第二种中的=>,与es6中的=>不是一个东西;
//该=>用来表示函数类型的定义,左边是输入类型,右边是输出类型

(3) 函数参数问题


//形参后加?  表示该参数是可选的,爱写不写
//注:该可选参数必须放在最后一个写,即str2后不可以有其他必选形参
function fn(str1:string,str2?:string){
  if(str2){
    return str1+str2
  }else{
    return str1
  }

}
console.log(fn('好'));      //好
console.log(fn('好','耶'));  //好耶


//形参直接给默认值
//注:给默认值的形参就不用管是不是写在最后了
function fn1(str1:string,str2:string='耗',str3:string){
  return str1+str2+str3
}
console.log(fn1('烦','鼠','了'));   //烦鼠了
console.log(fn1('烦',undefined,'了'));   //烦耗了

//剩余参数
//注:剩余参数是数组
function fn2(...rest:number[]){
return rest
}
console.log(fn2(1,2));

(4)重载

重载决策是一种编译时机制,用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。

翻译人话就是:他可以给函数定义多种类型情况。请看代码:

//重载包括:重载签名+实现签名
//就是将所有可能排列组合似的写出来
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: string, b: number): string;
function add(a: number, b: string): string;  //以上部分是:重载签名
function add(a: string | number, b: string | number) {  //实现签名
    if (typeof a === 'string' || typeof b === 'string') {
        return a.toString() + b.toString();
    }
    return a + b;
}

7. 元组

一种限制数组的元素类型和个数的数组

//定义为元组,则类型和数量都必须与之匹配
let arr:[string,number]=['a',2]  //正确的
let brr:[string,number]=[2,'b']  //报错:不能将类型“string”分配给类型“number”
let crr:[string,number]=['c',3,5] //报错:源具有 3 个元素,但目标仅允许 2 个

//允许向元组中push元素,到push的新元素无法访问
arr.push(2)
console.log(arr);  //['a', 2, 2]
console.log(arr[3]); //报错:长度为 "2" 的元组类型 "[string, number]" 在索引 "3" 处没有元素

8. 枚举enum

枚举类型用于定义数值集合

enum num {
  one,
  two,
  three
};
let n:num=num.two
console.log(n);  //1

9.void

用于标识方法返回值的类型,表示该方法

没有返回值。

function fn():void {
    alert(11);   //无返回值
}

10. never

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值