要一直走下去

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

详解ts中简单数据类型

1、类型声明

let b:number    //仅声明
let c:boolean=true //声明并赋值
function fun(name:string,age:number) //形参类型声明

2、自动类型判断

let b=23;  //b的类型自动为number,不能给b赋值其他类型

3、字面量声明(字面量就是常量)

//方式一
let c:12; 
//方式二  
const b=12; 

4、any类型

let a:any;   //显示声明any类型
let b     //隐式声明any类型

any类型的变量可以赋值任何类型
any类型有隐患any类型初始化后,可以将any类型的值赋给别的类型变量,可能造成其他变量类型混乱

// any类型赋值给b,造成隐患:b的类型变了
let a:any=123;
let b:boolean;
b=a;
console.log(typeof a)  //number
console.log(typeof b)  //number

5、unknown类型

unknown类型的变量与any一样,可以赋值任何类型。
与any类型不同的是,unkown类型初始化后,不能直接赋值给别的类型,编译会报错,但可以在条件语句中,赋给别的类型

let a:unknown=true;
let b:boolean;
// b=a;   编译报错
if(typeof a ==='boolean'){
    b=a;
}
console.log(b);  //true
console.log(a);  //true

6、ts中的类型断言

上节课我们知道,想把unkonwn类型赋值给别的类型,不能直接赋值,要放在if语句块中
而有了类型断言,可以直接这样写:b=a as number,等于告诉解析器,a我保证是number,你直接赋值过去就行,但如果a不是number也会直接赋值,可能造成隐患

let a:unknown=true;
let b:boolean;
b=a as boolean;   //ok,编译通过

可能有隐患

let a:unknown=123;
let b:boolean;
b=a as boolean;   //如果a类型不是布尔会造成隐患:b的类型变了

7、ts中的函数

1)对函数中形参进行类型声明

function sum(x: number, y: number) {
    return x + y
}

//调用时,会对实参类型以及个数进行检查,类型不对报错,多参或少参都报错
sum(1) //
sum("1", "2")  //
sum(1, 2)  //

2)函数中返回值类型的声明,有以下几种情况

A:声明返回值类型,类型放在函数后面

function fun2():string{
    return "123";
}

B:返回值为void

function fun(): void {
    return 'a';//报错
    return 123;//报错
    return true;//报错
    return NaN;//报错
    return undefined;//不报错
    return null;//不报错
    return;//不报错
}

C:不设置返回值类型,但是有返回值,此时TS解析器会以返回值的类型作为函数返回值类型

function sum(x: number, y: number) {
    return x + y  //默认返回值为number
}

D:返回值类型为 never,永远不会返回结果,只有报错才满足(了解)

function fun():never{
 throw new Error("出错了!!");
 //程序报错代码立即结束,结束以后就不会有返回值了,用的较少,知道就行
}

 

posted on 2022-07-10 22:23  要一直走下去  阅读(208)  评论(0)    收藏  举报