let isDone: boolean = false
let isExist: boolean = true
console.log(isDone, isExist)
复制
运行:
控制台执行命令:ts-node dataType.ts
->false true
复制
ts的number类型继承了es6的number,额外支持二进制和八进制数值。
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 16进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral)
复制
运行:
6 61453 10 484
复制
let str: string = '我是晁州,我很可爱。。。'
console.log(str);
复制
运行:
我是晁州,我很可爱。。。
复制
模板字符串:
let str: string = '我是晁州,我很可爱。。。'
console.log(str);
let tempString: string = `i am a template str:${str}`
console.log(tempString);
复制
运行:
我是晁州,我很可爱。。。
i am a template str:我是晁州,我很可爱。。。
复制
let arr1: Array = [1,2,3,4] // 使用尖括号形式声明(数组泛型)
console.log(arr1);
let arr2: number[] = [2,3,4,5] // 使用方括号声明
console.log(arr2);
复制
运行:
[ 1, 2, 3, 4 ]
[ 2, 3, 4, 5 ]
复制
元组类型和数组相似,不同的是,元组每一项的数据类型可以不同(数组使用any类型也可以实现每一项类型不同)
每一项的元素类型必须一致,否则编译出错
复制
let tuple1: [string, number, boolean]
tuple1 = ['admin', 34, false]
console.log(tuple1);
复制
运行:
[ 'admin', 34, false ]
复制
ts支持枚举类型,使用如下:
enum Color {red, green, blue} // 默认从0开始编号,即red=0,可以直接指定red=1开始
let c: Color = Color.red
console.log(c === 0, c === Color.red);
let colorName: string = Color[1]
console.log('Color[1]的name是:', colorName);
复制
运行:
true true
Color[1]的name是: green
复制
any类型表示任意类型,类似于golang中的interface{}类型,any类型可以赋值任意类型。
let any1: any = 4
console.log(any1);
any1 = false
console.log(any1);
any1 = undefined
console.log(any1);
let anyArr: any[] = [1, true, 'hello']
console.log(anyArr);
let anyArr2: Array = [false, 0x1234, 'world'] // 泛型声明
console.log(anyArr2);
复制
运行:
4
false
undefined
[ 1, true, 'hello' ]
[ false, 4660, 'world' ]
复制
void类型表示没有任何类型,func无返回值时可以使用此类型。
function voidFunc(): void {
console.log('void function invoked!');
}
voidFunc()
let voidVar: void = undefined // void类型只能赋值undefined或null
console.log(voidVar);
voidVar = null
console.log(voidVar);
复制
运行:
void function invoked!
undefined
null
复制
这两种类型是所有类型的子类型,没毛线用。
let a: undefined = undefined
let b: null = null
console.log(a, b);
let num1: number = 2
console.log(num1);
num1 = a // undefined或null类型可以被任意类型给赋值,和any恰好相反
console.log(num1);
let c: any
c = 23
console.log(c);
复制
运行:
undefined null
2
undefined
23
复制
never类型是那些总是会抛出异常,或者根本就不会有返回值的函数返回值类型。
let a: never
let b: string = 'admin'
b = a
console.log(a, b);
function error(msg: string): never {
throw new Error(msg)
}
function neverFunc(): never{
while(true){
}
}
复制
运行:
undefined undefined
复制
断言好比其它语言里的类型转换,但是不进行特殊的数据检查和结构。
let someValue: any = 'i am a unknown value'
console.log(someValue.length);
let len: number = (someValue as string).length
console.log(len);
复制
运行:
20
20
复制