TypeScript学习(三)——变量类型约束(any,void,object,Object,unknown,undefined,null,never,string,number,boolean)

王元肉==>个人主页

大家一起加油,我喜欢分专栏将知识打碎成一份一份小知识点,一篇文章只说一个知识点,因此每篇文章篇幅较短,希望大家不要介意。如有需要可以查看专栏看看是否有该文章中涉及到的知识点进行讲解的文章,如果大家觉得有帮助,希望大家三连支持一下。

推荐阅读
前往上一篇==>静态类型变量声明

any

/* 
  在编译时,移除类型检查,也就是可以是任意类型的值,并且值也有其对应的方法
*/
let AnyNum: any = 4.123;
console.log(AnyNum.toFixed(2));

void

/* 
  1.void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
  2.声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
*/
function fnvoid(): void {
  console.log('hahaha');
}

let voidNum: void = undefined;

fnvoid();

object

/* 
  object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
*/
// declare就是告诉TS编译器你担保这些变量和模块存在,并声明了相应类型,编译的时候不需要提示错误
declare function create(o: object | null): void;

create({ prop: 0 }); // OK
create(null); // OK

/* create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error */

Object

/* 
  Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
*/
let ObjectNum: Object = 4;
// ObjectNum.toFixed(2);
// 类型Object上不存在toFixed方法

// [propName: string] : any 表示对象的其它属性为字符串类型的属性,属性值的类型为any
let obj: {name: string, [propName: string] : any} = {name: "zhangsan",age:18}

unknown

// 不知道类型,可以给它赋值任意值
let a:unknown;
a = 1;
a= "a";
console.log(a);
// 与any的区别,any类型的变量可以赋值给其它变量
// 但是unknown变量不能赋值给其它的变量,会提示报错
let b:any;
b = "b";
let c:string = "c";
c = b;
// c = a; // 报错不能将类型“unknown”分配给类型“string”。

undefined/null

/* 
  1.默认情况下null和undefined是所有类型的子类型。 就是说你可以把null和undefined赋值给number类型的变量。
  2.当你编译的时候`tsc [filename] --strictNullChecks`标记,null和undefined只能赋值给void和它们各自(严格校验)
*/
let un: number = undefined;
let un2: number = null;

never

/* 
  never类型是那些总是会抛出异常或死循环函数根本就不会有返回值
*/
function error(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
  }
}

string

/* 和JavaScript一样,可以使用双引号( ")或单引号(')表示字符串。
  同理,还可以使用模板字符串,ts会将字符串中中文转换为编码
*/
let names: string = "bob";
names = "smith";
let nametemplate: string = `names的值是${names}`
console.log(nametemplate);

number

/* 
  和JavaScript一样,TypeScript里的所有数字都是浮点数。 
  这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,
  TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量,会被直接编译成10进制。
*/
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
console.log(decLiteral,hexLiteral,binaryLiteral,octalLiteral);

boolean

/* 在ts中布尔值只能是true和false,不能用0和1之类的来表示 */
let isTrue: boolean = false;
isTrue = true;
console.log(isTrue);

前往下一篇==>变量类型约束(&,|,别名,数组,类型断言,枚举,元祖)
在这里插入图片描述
结束啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuJie_Boom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值