原始数据类型:boolean、number、string、null、undefined;
布尔类型
let isDone: boolean = true;
let isCheck: boolean = Boolean(1); //直接调用Boolean
错误示例:因为new Boolean返回的是一个对象类型
let isCheck: boolean = new Boolean(1);
数值类型
let num: number = 1;
let num16: number = 0xf00a: //16进制
let notNum: number = NaN;
let infNum: number = infinity; //无穷大
字符串类型
let userName: string = 'dqd';
let age: number = 18;
let output: string = userName + `的年龄是${age}`;
空值:大部分情况下用于定义函数没有返回值,一般不用于定义变量,因为一旦变量定义为void类型,那么只能赋值为undefined或null
function hello(): void{
console.log('helloWorld');
}
null和undefined一般不用于定义变量
注意:null和undefined是所有类型的子类型,但是void类型不能赋值给其他类型
任意值类型(any):用来表示允许任意值类型赋值
let admin: any = 'admin';
admin = 123;
//任意值类型允许访问其任意属性
let anything: any = 'hello';
console.log(anything.myName); // undefined
注意:一个变量在声明时没有定义类型,也没有赋值,就会被定义为任意值类型;一个变量在声明时没有定义类型,但有赋值,typescript有类型推断,就会将赋值的类型定义成变量的类型
let something1;
something1 = 'abc';
something1 = '123';
let something2 = 'abc';
// something2 = 123; //会报错,因为typescript有类型推断,会将赋值的类型定义成变量的类型
联合类型
let cat: string|number;
Typescript 接口
// 接口定义是时一般首字母大写
interface Person{
name: string;
age: number; // age?: number; 表示age属性非必须
[propName: string]: any; //任意属性
readonly role: string; // 只读属性,只能进行一次赋值,后续可以获取不能更改
}
// 用接口定义的对象,属性不能多写或少写
let tom: Person = {
name: "tom",
age: 18,
sex: '男',
role: 'student' //tom.role = 'teacher'; 会报错
}
// tom1是object类型
let tom1 = {
name: "tom1",
age: 18
}