1、原始数据类型:
布尔值、数值、字符串、null、underfined、synbol
2、联合数据类型
联合类型使用 |
分隔每个类型 let s :string | number
3、接口
使用接口(Interaces)来定义对象的类型
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: 'Tom',
age: 25
};
可选属性
interface Person {
name: string;
age?: number;
}
let tom: Person = {
name: 'Tom'
};
任意属性
interface Person {
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
name: 'Tom',
gender: 'male'
};
使用 [propName: string]
定义了任意属性取 string
类型的值。
需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集
只读属性
interface Person {
readonly id: number;
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
id: 89757,
name: 'Tom',
gender: 'male'
};
tom.id = 9527;//这步报错了,只读属性只能在tom的时候赋值
4、数组类型
「类型 + 方括号」表示法 let fibonacci: number[] = [1, 1, 2, 3, 5];
数组泛型 let fibonacci: Array<number> = [1, 1, 2, 3, 5];
接口表示数组
interface NumberArray {
[index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];
NumberArray
表示:只要 index
的类型是 number
,那么值的类型必须是 number
any数组 let list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }];
类数组:
5、函数的类型
1、函数声明
// 函数声明(Function Declaration)
function sum(x, y) {
return x + y;
}
2、函数表达式
// 函数表达式(Function Expression)
let mySum = function (x, y) {
return x + y;
};