我认为这个TypeScript跟C语言是很像的,对语言的定义都有严格的规范。
letstr:string="这是字符串类型"
//上方我们将str这个变量定义为了string类型,如果对他输入其他类型的内容就会报错,例如:
letstr:string=666
//这个就会报错了,会提示你不能将类型"number"分配给类型"string"
letmuban:string=`web${str}`
//我们也可以使用ES6中的模板字符串
letu:void=undefined
letu:void=null
//空值类型能够有这两种内容。void的内容也是不能去赋值给别人的
//某种程度上来说,void 类型像是与 any 类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
functionfnvoid():void{
return//函数也可以定义为空值,如果定义了void则不能返回内容
}
//undefined跟null类型的也可以交换着用的,具体区别放在了下面
八种内置类型
letstr: string="jimmy";
letnum: number=24;
letbool: boolean=false;//这里接收的是布尔值,不是布尔值对象(let b:boolean = new Boolean())
letu: undefined=undefined;
letn: null=null;
letobj: object= {x: 1};
letbig: bigint=100n;
letsym: symbol=Symbol("me");
注意点
null 和 undefined
默认情况下 null
和 undefined
是所有类型的子类型。 就是说你可以把 null
和 undefined
赋值给其他类型。
// null和undefined赋值给string
letstr:string="666";
str=null
str=undefined
// null和undefined赋值给number
letnum:number=666;
num=null
num=undefined
// null和undefined赋值给object
letobj:object={};
obj=null
obj=undefined
// null和undefined赋值给Symbol
letsym: symbol=Symbol("me");
sym=null
sym=undefined
// null和undefined赋值给boolean
letisDone: boolean=false;
isDone=null
isDone=undefined
// null和undefined赋值给bigint
letbig: bigint= 100n;
big=null
big=undefined
如果你在 tsconfig.json 指定了 "strictNullChecks":true
,null
和 undefined
只能赋值给 void
和它们各自的类型。
number 和 bigint
虽然 number
和 bigint
都表示数字,但是这两个类型不兼容。
letbig: bigint= 100n;
letnum: number=6;
big=num;
num=big;
会抛出一个类型不兼容的 ts (2322) 错误。