原始数据类型
// string,存放字符串
let str: string = 'string-type'
// number,存放数值
let num: number = 0
// boolean,存放布尔值
let bool: boolean = true
// void,存放undefined
let v: void = undefined
// undefined,存放undefined
let u: undefined = undefined
// null,存放null
let n: null = null
这里需要注意的是,严格模式下,string、number类型的变量初始值必须为定义的相同类型的数据,不能为null,否则报错
typescript还有一种symbol类型,对应了es6中的Symbol
let s: symbol = Symbol()
但需要注意的是,因为这是es6中新增的一种基础类型,所以我们需要在配置文件中将target修改为es2015,否则它无法识别。
对象类型
// object 不仅可以定义对象,还可以定义数组、函数等类型的数据
let o: object = {}
let f: object = function() {}
let a: object = []
// 如果我们希望只能定义对象,可以通过字面量的形式来定义
// 如果只规定{},那么我们可以在内部定义任意类型的属性
let obj: {} = {
name: 'typescript'
}
// 规定对象内属性的数据类型,但是一旦我们规定了对象内属性的数据类型,那么对象内的属性必须严格按照我们定义的类型,不能多也不能少
let obj1: {
name: string,
age: number
} = {
name: 'typescript',
age: 10
}
obj1.name = 0 // 赋值错误的类型数据,会报错
obj1.log = 'log' // 定义额外的属性,会报错
// 属性的多类型,通过|来使变量拥有多种数据类型
let obj2: {
name: string | number
} = {
name: '1'
}
数组类型
数组泛型
// Array<子元素类型>,数组内的数据类型必须是<>内定义的类型
let arr: Array<number> = [1, 2, 3]
// 我们也可以定义多种数据类型
let arr1: Array<number|string> = [1, 2, '3']
let arr2: number[] = [1,2,3]
// 我们也可以这样用
let arr2: (number|string)[] = [1,2,'ss']
元组trup
元组是具有固定数组数量和类型的数组
// 固定数量的数组,元组trup,数组的数量和数组每个元素的类型都必须和定义的一致
let arr1: [number, string] = [1, 'ssss']
函数类型
同样的,我们也可以定义函数参数的数据类型和函数返回值的数据类型,那么在调用的时候,传入的数据的类型必须和定义的一致,且函数返回值也需要和定义的一致
普通函数
// function name(param: <type>): <return type> {}
function test1(param1: number, param2: string): string {
return param2
}
test1(1, 'typescript')
回调函数
如果函数作为回调函数传入函数,同样的,回调函数也可以被定义,方式和普通函数是类似的的
// function (callback: (param: <type>, ...) => <return type>) {}
function test2(callback: (param1: string) => void): void{
callback('hi typescript')
}
枚举类型
枚举类型是一个列举了若干可能的集合
// 默认不赋值情况下,枚举类型的值是从0开始,并往下递增1
enum status {
success, // 0
loading, // 1
fail // 2
}
// 我们也可以定义初始的开始值(必须是数值),后面的值也会向下递增1
enum status {
success = 2, // 2
loading, // 3
fail // 4
}
// 也可以定义任意具体的值
enum status {
success = 0, // 0
loading = 1, // 1
fail = 2 // 2
}
// 然后可以在对应的地方作为值来使用
let obj: {} = {
status: status.success // 0
}
任意类型
任意类型,说明变量可以接收任意类型的数据,类似于JavaScript的变量
// param: any = value
// 函数中
function test(param: any): void {
console.log(any)
}
test(1)
test('any')
// 变量中
let a: any = 1
a = 'any'