let b: boolean = true;let n: number = 100;let s: string = 'hello';let sy: symbol = Symbol();let x: number | string = 100;x = 'string';// any 要慎用,要不ts没有意义了let y: any = 100;y = true;// 数组let arr: string[] = ['1', 'b', 'c'];let numberA: Array<number> = [10, 20, 30];// 元组let arr1: Array<string | number | boolean> = [1, '2', false];// 对象 let obj: object = { x: 100 }// 函数let fn: Function = () => { }// object、Function不常用,不够细节// 断言let n1 = 200;// n1 = 's'; 报错,ts自动根据上面的赋值去断言类型// 函数的使用,如果返回值很明确,可以不写返回值类型function fn2(n1: number, n2: number): number { return n1 + n2;}// 如没有返回值,使用 voidvoid// 自定义类型type info = string | number;let info1: info = 'hello';info1 = 100;type fnType = (a: number, b: string) => void;const fn3: fnType = (a, b) => { }// 接口interface IPerson { name: string // 每一项无分号 age: number fn1: fnType}// interface 用于 对象const zhangsan: IPerson = { name: 'zwx', age: 20, fn1: (a: number, b:string) => { }}// interface 用于 classclass Person implements IPerson { name: string age: number constructor(name: string, age: number) { this.name = name this.age = age } fn1(a: number, b: string) { }}
TS 静态属性
class Foo { name: string constructor(name: string) { this.name = name; } getName() { return this.name; } static flag = 'abc' static getFlag() { return this.flag }}const f1 = new Foo('zs');// 这些都是实例属性,实例方法f1.name // zsf1.getName() // zs// 这些是静态属性, 在实例f1身上获取不到的,会报错Foo.flag // abcFoo.getFlag() // abc