在TS中使用let 代替JS 中的var。
• 布尔
let status:boolean = false
let a:boolean = true
• 数字
let a:number = 1;
let b:number = 1.01
• 字符串
let aa:string = "11"
let bb:string ="ss"
// 使用模板字符串也是可以的
let cc:string = `it is string ${bb}`
• 数组 • 在元素类型的后面加上[ ] • 使用数组泛型
let arr:Array<number> = [1,23,4]
let arr1:number[] = [1,23,4]
let arr2:Array<number | string> = [1,2,3,"a","b"]
// 数组内定义的类型和数量必须和后面的赋值一一对应
let arr3:[number,string]= [1,"2"]
let arr3:[number,string]= ["1","2",1] //错误
• 枚举 • enum类型是对JavaScript标准数据类型的一个补充
enum color {red="red",blue=2,yellow}
let c:color = color.blue
let a:color = color.red
console.log(c) // 2
console.log(a) // red
• any
• 不确定变量的类型,并且通过类型检查器的检查,可以用any来标记这些变量
• 在对现有代码改写的时候any很好用,它允许在编译时可选择的包含或移除类型检查。但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法
let a:any = 22
let b:any = "22"
let c:any = false
• void
• 不带返回值
• 与类型any 项目,不代表任何类型
function aa():void{
console.log("aa")
}
• 使用void 声明变量,只能赋值 undefined 和 null let bb:void = undefined // 报错。类型不正确 let cc:void = "a" • null 和 undefined • 默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。 • undefined和null两者各自有自己的类型分别叫做undefined 和 null
let aaa:number = null
• never • never 类型表示的是那些永不存在的值类型。 • never 类型是那些总是会抛出异常或根本不会有返回值的函数表达式或箭头函数表达式的返回值类型。 • 变量也可能是never类型,当它们被永远不为真的类型保护所约束时。 • never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never • object • object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
declare function create(o: object | null): void;
create({ prop: 0 }); // OK
create(null); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
• 类型断言 • 通过类型断言告诉编辑器“相信我,我知道我自己在干什么” • 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 • 它没有运行时的影响,只是在编译阶段起作 • 有两种写法
let val:string = "aa"
let valength:number = (<string>val).length
// 2 as 写法
let valength2:number = (val as string).length
console.log(valength2)