TS基础-基础类型

这篇博客介绍了TypeScript的基础类型,包括布尔、数值、字符串、null和undefined、function、void、symbol、bigint以及任意值(any/unknown)。强调了void变量只能赋值undefined,在strictNullChecks设置为false时可赋值null。还提到了symbol类型需要es6编译辅助库,bigint用于大整数操作,但兼容性不佳。最后提醒,虽然any类型允许赋值任意类型,但过度使用并不推荐。

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

安装ts

1. 安装全局typescript

npm install -g typescript

基础类型、

1. 布尔/数值/字符串


```javascript
const bol: boolean = true;
const num: number = 1024;
const userName: string = "小明";
//字符串模板依旧能用
const str:string=`${userName}`

2. null和undefined

//这两个类型只有 自己
const onlyNull: null = null;
const onlyUndefined: undefined = undefined;

3. function

声明的函数在调用的时候,参数个数要和声明时候的参数个数保持一致

//没有返回值的函数可以用void声明
const fn1 = (param1:string,param2:number): void => {
  console.log("我是没有返回值的箭头函数");
};

function f2(param1:string,param2:number):void{
  console.log("我是没有返回值的普通函数");
}

//有返回值的箭头函数声明是这样的
const fn3 = (): string => {
  return "小月=>"
};

//有返回值的普通函数声明是这样的

function f4():string{
   return "小芳fn"
}


//函数表达式的双向限定
//上述fn1其实只对=右侧做了限制,对左侧并没有
//完善一点,可以这样 => 用来表示函数的定义,左输入类型,需要用括号括起来,右输出类型

const fn1:(param1:string,param2:number)=>void = (param1:string,param2:number): void => {
  console.log("我是没有返回值的箭头函数");
};

// 函数的可选参数
// 注意可选参数要在确定参数后
function f5(name:string,age?:number):string{
   return "冷月心fn"
}

//函数参数默认值
function f6(name:string,age:number=18):string{
   return `${name}--${age}`
}
//此时可选参数不必一定在确定参数后,但是调用有问题
function f7(name:string,desc?:string,age:number=18):string{
   return `${name}--${age}--${desc}`
}

//剩余参数
function f8(...args:number[]):number[]{
  return args
}
console.log(f8(1,2,3,4,5))//[1,2,3,4,5]

4. void声明变量

void也可以用来声明变量,但只能作用在undefined身上,null也不行。只有tsconfig.json中strictNullChecks属性设置为false时,null才能赋值给void

> const u:void=undefined;//这是个鸡肋用法,基本不会这么用 const n:void=null;//这样会报错
> const age:void=18;//这样也会报错

5. symbol

symbol使用依赖es6编译辅助库 ,tsconfig.json lib[“es6”]

const sym1:symbol = Symbol();
const sym2:symbol = Symbol();
console.log(sym1===sym2)//false

6. bigint

bigint可以安全地存储和操作大整数, 目前兼容性不是很好

// 超出最大整数的计算会超精度,得不到期望值 

const max = Number.MAX_SAFE_INTEGER;
const max1 = max + 1
const max2 = max + 2
console.log(max1===max2)// true ,实际应该不相等


// 需要将数值转成BigInt计算,不会超精度,以下为js代码
const big_max = BigInt(Number.MAX_SAFE_INTEGER);
//这里n是bigint的标志,且bigint和number是完全不同的两个类型
//ts中使用bigint,不支持1n,2n,但是可以BigInt(1),BigInt(2)代替
const big_max1 = big_max + 1n
const big_max2 = big_max + 2n
console.log(big_max1 === big_max2) // false 这才是预期结果

任意值

任意值(any/unknown)用来表示允许赋值为任意类型

声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型(隐式,noImplicitAny属性可以校验到)
了解后分分钟忘了即可,这不是什么好习惯

  1. any
//非any类型不可以跨类型赋值
let str1:string="小刘";
str1=123//报错

//any类型可以跨类型赋值,这就像js本身
//注意,这种属于显式声明any类型,tsconfig.json中noImplicitAny属性校验的是隐式
let str2:any="小刘"
str2=123//不报错

2. unknown


```javascript
//any类型下,可以在任意值上访问任何属性,调用任何方法,但是unknown不行

let str3:any="小刘"
str3.say();//不报错
str3.age //不报错

//unknown是更安全的any
let str4:unknown="小刘"
str4.say();//报错
str4.age //报错


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值