一、JavaScript 语言(注意,不是 TypeScript)将值分成8种类型。
- number
- string
- boolean
- null
- undefined
- object
- bigint
- symbol
TypeScript 继承了 JavaScript 的类型设计,以上8种类型可以看作 TypeScript 的基本类型。
注意:上面所有类型的名称都是小写字母,首字母大写的
Number
、String
、Boolean
等在 JavaScript 语言中都是内置对象,而不是类型名称。undefined 和 null 既可以作为值,也可以作为类型,取决于在哪里使用它们。
这8种基本类型是 TypeScript 类型系统的基础,复杂类型(引用类型)由它们组合而成。
1、number 类型
const x:number = 123;
const y:number =3.14;
const z:number = 0xffff
// 整数、浮点数和非十进制数都属于 number 类型。
2、string 类型
const x:string = 'hello';
const y:string = `${x} world`;
// 普通字符串和模板字符串都属于 string 类型
3、boolean 类型
cosnt x: boolean =true;
const y:boolean =false;
4、undefined类型、null类型:
undefined 和 null 是两种独立类型,它们各自都只有一个值(
undefined 类型只包含一个值undefined(
即还未给出定义,以后可能会有定义)
null类型:null 类型也只包含一个值null
,表示为空(即此处没有值)
注意:
4.1、如果声明变量但是没有指定类型,被赋值为null或undefined;在关闭编译设置noimpolicitAny和strictNullChecks时,它们的类型就会被推断为any
4.2、想避免这种情况,则需要打开编译选项strictNullChecks;
打开编译设置strictNullChecks
以后,赋值为undefined
的变量会被推断为undefined
类型,赋值为null
的变量会被推断为null
类型。
5、object:object 类型包含了所有对象、数组和函数
const x:object = {a:1};
const y:object = [1,2,3];
const z:object = (n:number)=> n+1
// 上面示例中,对象、数组、函数都属于 object 类型。
6、bigint 类型 :包含了所有的大整数
const x:bigint = 123n;
const y:bigint = 0xffffn;
6.1、bigint与number不兼容
const x:bigint = 123 //报错
const y:bigint =3.14 //报错
7、symbol 类型:包含所有的Symblo值
const x:symbol = Symbol()
Symbol()
函数的返回值就是 symbol 类型
二、包装对象类型
2.1、复合类型:object
2.2、原始类型(代表最基本的、不可再分的值):number、