校验空值
tsc xxx.ts --strictNullChecks
布尔值
let isDone: boolean = true || false
数字
let decLiteral:number = 20 // 十进制
let hexLiteral:number = 0x14 // 十六进制
let binaryLiteral: number = 0b10100 // 二进制
let octalLiteral: number = 0o24 // 八进制
字符串
let name : string = '扯淡也是一种艺术'
let age : number = 29
let sentence = `Hello, my name is ${name}
I'll be ${aeg +1} year old next month`;
// let sentence = 'Hello, my name is ' + name + '.\n\n' + 'I\'ll be' + (age+1) + 'year old next month'
数组
let list:number[] = [1,2,3]; //数组类型
let list:Array<number> = [1,2,3] // 数组泛型
元组(Tuple)
let x: [string, number]
x = ['hello', 10]
越界元素
x[3] = 1 // 联合类型, 只要是string ,number;
注意 3.1版本之前,不会报错,之后版本会报错
枚举
// 枚举类型, 是对JavaScript类型的一种补充。枚举类型可以对一组数值赋予更友好的名字, 例如: 表达一种颜色有三种类型。红绿蓝
enum Color {
Red = 1,
Green = 2,
Blue = 4
}
let c: Color = Color.Green;
let colorName: string = Color[2];
console.log(colorName) // Green
any
// 不希望类型检查
let notSure : any = 4
notSure = 'maybe a string instead'
notSure = false
void
// 没有任何类型
function warnUser():void {
console.log('This i my waring message')
}
let unuseable : void = undefined || null
null 和 undefined
let n : null = undefined; // 子类型可以赋值给父类型
never
// 永远不存在 - 用于函数中, 抛出异常。
function error(message: string):nerver {
throw new Error(message)
}
function fail() {
return error('something failed')
}
function infiniteLoop(): never {
while(true) {
}
}
Object
// declare 表示声明一个关键字。
declare function create(o: object | null): void;
create({props: 0})
create(null)
// 例如下方就不满足
create(42)
create(false)
create(undefined)
create('string')
类型推断(断言) as
// 例如 告诉浏览器 你可以相信我, 我知道我在干什么
let someValue: any = 'this is a string'
// someValue.length
// let stringLength: number = (<string>someValue).length
let stringLength: number = (someValue as string).length