原始类型
在编写代码的时候,并不是所有的变量都要添加类型。TypeScript是可以推断类型的(即根据变量的初始值自动推断出变量的类型)。如果推断的类型是对的,则不用添加类型。如果无法正确推断出类型,或者推断出的类型可能不是你所期望的。在这种情况下,你需要手动添加类型声明来确保代码的正确性。
注意let、const的区别
基础类型和包装类型:
- 小写的类型一般用于描述基本类型
- 大写的类型用来描述的是包装类型
在 JavaScript 中,基础类型(Primitive Types)和包装类型(Wrapper Types)是两种不同的数据类型。
基础类型包括:
number
:数字类型,包括整数和浮点数。string
:字符串类型,用于表示文本数据。boolean
:布尔类型,只有两个值:true
和false
。null
:表示一个空值,即没有对象被赋值。undefined
:表示一个未定义的值,即变量声明后未被赋值。
包装类型是对象类型,它们是基础类型的封装对象,提供了更多的方法和属性来操作基础类型的值。包装类型包括:
Number
:数字类型的包装对象。String
:字符串类型的包装对象。Boolean
:布尔类型的包装对象。
当你对基础类型的值调用方法或访问属性时,JavaScript 会自动将基础类型转换为对应的包装类型,以便你可以使用对象的方法和属性。
number
ts
export {}; // 第一行增加这个是为了使文件里的变量不污染全局
let num: number = 1;
1
2
3
2
3
string
ts
export {};
let str: string = "ts";
let message: string = `hello, ${str}`;
1
2
3
4
2
3
4
boolean
ts
export {};
let bool: boolean = true;
1
2
3
2
3
null
ts
export {};
let nul:null = null;
1
2
3
2
3
undefined
ts
export {};
let undef: undefined = undefined;
1
2
3
2
3
symbol
ts
export {};
let sy: symbol = Symbol();
1
2
3
2
3
bigint
ts
export {};
let b: bigint = BigInt(Number.MAX_SAFE_INTEGER + 1)
1
2
3
2
3
注意
(1)非严格模式下,undefined
和 null
是所有类型的子类型。因此,你可以将它们赋值给任何类型的变量。
undefined和null最大的价值主要体现在接口类型上,表示可缺省、未定义的属性;null表示对象或者属性是空值。
ts
let num: number = undefined;
1
(2)void只用在函数没有返回值的情形下。
tsx
let vd: void = undefined; // 可以把undefined类型赋值给void类型,但是反过来不行
// 函数没有返回值,那么函数的返回值类型就是void
function fn(): void {
return undefined;
}
1
2
3
4
5
6
2
3
4
5
6