TS学习笔记—any 和 unknown

Any 和 unknown 类型

// --------- any -------------

// 我们知道,let a = 123 ; 的时候,会自动将 a 变成 number 类型的变量

// 但是当一个变量只是声明,但是没有赋值 ,将会自动转换成 ===》 any类型的变量

let a;

// 当 a 不需要给其他变量赋值当时候,等效于  let a: any;

a = 123;

a = "lmj"

a = true

console.log("这是a: ", a)

// a 的类型不确定,ts会自动将其定义为隐式 any ,能够变成多种类型





// 定义的any类型,是可以给仍以类型赋值, 也可以被任意类型赋值

let a2: any;

a2 = 123;

a2 = "xyy";

a2 = false;

a2 = a;

console.log("这是a2: ", a2)

let b: string = "lmj";

b = a2;

console.log("这是b: ", b)

// any 类型,不仅自己当类型可以多次改变,还能赋值给其他类型的变量
// --------- unkonwn ----------

let c: unknown;

c = 123;

c = "lmj";

c = true;

c = a2;

console.log("这是c: ", c)

a2 = c;

console.log("这是a2: ", a2)



let c2: unknown;

c2 = "xyy";

c2 = c;

console.log("这是c2: ", c2)

c2 = b;

console.log("这是c2: ", c2)



// unknown 是无法给 unknown之外 的其他变类型变量赋值的



// unknown 也是可以被任意赋值的, 类似 a 这种隐式的 any 都是可以给他赋值的
// 总结:

// 隐式any 和 声明的any 以及 unknown 都是可以自己给自己赋值的并且是多种类型的

// 隐式any 不能给这三类之外的内容赋值。自己能被任意类型的变量赋值

// 显式any 能给任意类型的变量赋值,也能被任意类型的变量赋值

// unknown 不能给 any 和 自己类型之外的变量赋值,能被任意变量赋值

// 如果希望 unknown 能赋值给其他基本类型,只需要判断一下就好了

let d1: unknown;

d1 = 123;

d1 = "lmj";



let d2: string;

d2 = "xyy";

d2 = "gy";



if (typeof d1 === "string") {

​    d2 = d1;

}



console.log("这是d2: ", d2)



// 判断其类型的方式还有一种,叫做 类型断言

d2 = d1 as string;

// 等效于 d2 = <string>d1

console.log("这是d2的类型: ", typeof d2)

console.log("这是d2的值: ", d2)

// 类型断言指的是,我断定他就是这个类型,那么依然可以赋值





// 类型断言 as 后面的类型必须是被赋值的类型,但是如果类型断言错了

// 则会直接改变 原变量 的类型, 强转

let e1: unknown;

e1 = 123;



let e2: string;

e2 = "lmj"

e2 = <string>e1;

console.log("这是e2的类型: ", typeof e2);

console.log("这是e2的值: ", e2)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值