let isDone: boolean = false;//boolean let decLiteral: number = 6;//number let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; let name: string = "bob";//string let list: number[] = [1, 2, 3];//数组 let list: Array<number> = [1, 2, 3];//泛型数组 let x: [string, number];//元组 x = ['hello', 10]; enum Color {Red = 1, Green, Blue};//枚举 let c: Color = Color.Green; let notSure: any = 4;//任意值,any类型能给任意类型的变量赋值 notSure = "maybe a string instead"; notSure = false; let unusable: void = undefined;//空值,只能赋予它undefined或null function warnUser(): void { alert("This is my warning message"); } let u: undefined = undefined;//undefined let n: null = null;//null function error(message: string): never {//never throw new Error(message); }
let objC :{name:string} objC={name:'李四',age:18,gender:'男'}//报错,无法添加age和gender属性 //解决方法 let objD :{name:string,[propName:string]:any} objD={name:'王五',age:18,gender:'男'}//正确 //propName译为属性名,不一定写propName,写成什么都行 //[propName:string]指定属性名为string类型 //[propName:string]:any 指定属性值为any类型
设置函数结构的类型
1 2 3 4 5
let f: Function;//用的少 let fn: (a: number, b: number) => number; fn = function (val1, val2) { return val1+val2 }
元组
1 2 3
let yz : [string,number]; yz= ['hello',12]; yz=[12,'hello'];//error
枚举
1 2 3 4 5 6 7 8 9 10 11
enum Color{ Red=1, Green, Blue } class Computer{ //新语法,可以通过该语法创建对应属性 constructor(public name:string,public size:number,public color:Color){} } let c = new Computer('戴尔',14.5,Color.Red); console.log(c.color)
可空类型
有点类似c#的可空类型写法如下:
1 2 3 4 5 6 7 8
let o:{ name?:string, age:number } o={age:25} function nullAble(a?:string):void{ console.log(a) }
类型别名
有点类似C语言的typedef 当我们用一下方式声明多个属性时需要写很多代码,我们可以给string | number |boolean类型起一个别名
1 2 3
let a: string | number |boolean let b: string | number |boolean let c: string | number |boolean
type别名:
1 2 3
type myType = string | number |boolean; let a:myType; let b:myType