通过类型注解来标识一个变量的具体类型,语法::Type。
类型注解是放在被修饰的实体的后面,比如:
const str:string = 'typescript';
关于类型检查,有两种模式:
在tsconfig.json配置文件中设置严格模式:
{
"compilerOptions": {
"strict": true,
}
}
Typescript的基本数据类型:boolean、string、number、bigInt、symbol、undefined、null、void、枚举类型、子,字面量类型。
void类型表示某个值不存在,这个类型作为函数的返回值类型。如果一个函数没有返回值,那么这个函数的返回值类型为void类型。
枚举类型是通过enum关键字来定义的,比如:
enum SSS{
Spring,
Summer,
Fall,
Winter
}
枚举类型分为:
不管是哪一种枚举,都可以通过枚举成员来访问枚举成员的值,比如:
enum Bool{
False = 0,
True = 1,
}
Bool.False; // 0
是一种通用的类型,顶端类型包含了类型系统中所有的可能的值。在Typescript中有两种顶端类型:any和unknown。
重点 any类型就是用来跳过编译器的类型检查的。所有类型都是any的子类型,任何类型的值都可以赋值给any类型
虽然any类型是能够跳过编译器的类型检查,但是在程序中,我们应该尽可能的减少使用any类型,只有定义明确的类型信息,Typescript编译器才能够有效的进行类型检查,这也是我们选择Typescript的原因。
unknown类型:任何其他类型的值都能赋值给unknown类型,和any类型一样,但是unknown类型比any类型更安全,因为unknown类型只能赋值给any类型或者unknown类型
unknown类型的另一个特点就是在使用之前,必须先细化为某一种具体类型,比如:
function f2(msg:unknown){
if(typeof msg==='string'){
return msg.length;
}
}
如果没有条件限制,直接返回msg.length,会有提示length的类型应该为unknown:

但是any类型就没有这些限制。
Typescript提供的尾端类型是never类型,never类型不包含任何值。never类型是所有其他类型的子类型,所以never类型的值是可以赋值给任何类型的,但是所有其他类型的值不能赋值给never类型。
场景1: never类型可以作为函数的返回值类型,表示函数不能返回一个值,比如:
function f1():never{
throw new Error("");
}
有一种情况是函数没有设置return语句,函数正常执行结束后,是返回一个undefined,这时候函数的返回值类型是void而不是never类型。
在函数根本不能返回一个值的时候,函数的返回值类型才是never类型。比如上面代码中的f1函数,这个函数中抛出异常,导致函数终止运行,这时候函数不会返回任何值。
**场景2:**在条件类型中使用never类型来辅助完成一些类型运算,比如:Exclude。