// ts 数据类型
// 1. 基本数据类型: string, number, boolean, undefined, null
let s:string = 'aaaa'
// 2. 数组: number[] 泛型写法:Array<number>
let arr:number[] = [1,2,3]
let arr1:Array<string> = ['1', '2', '3']
//3. 元组:[string, number, boolean] 定义和复制一一对应
let temp:[string, number, boolean] = ['a', 12, true]
//4. 枚举 enum Color{red, green, blue}
console.log(Color[1]) // green
console.log(Color['green']) // 1
//5. any
//6. void
//7. object
//8. 联合类型 string|number 可以是数字或者number
//9.1 接口 interface 属性和值的约束
interface Iperson {
readonly id: number, // readonly 只读
age?: number, // 可选
name: string
}
const person = {
id: 1,
age: 20,
name: '法外狂徒'
}
//9.2 接口实现函数调用签名
interface ISearch {
(source:string, substr: string):boolean
}
var searching:ISearch = (source:string, substr: string):boolean => {
return source.search(substr)
}
//9.3 接口实现类的约束,类通过implements实现多个接口逗号隔开, 接口可以通过 extends 继承其他接口
interface ISwim {
swim():void
}
class Person implements ISwim {
swim() {
console.log('swiming................')
}
}
//10 修饰符
// 1. public 可访问:子类+实例
// 2. private 可访问:自己
// 3. protected 可访问:子类
// 4. readonly 可访问:修饰的属性,只能在构造函数中初始化,自己的方法和外部实例以及子类都不能修改
//11 存取器 get set
//12 静态成员 static 只能类名.属性访问
//13 抽象类,抽象方法 abstract 修饰, 子类实现父类 且实现其父类的抽象方法
//14 函数的默认参数(有默认值),可选参数(后面加 ?),剩余参数(最后一个参数, ...args: [])
//15 泛型 <T>:定义的时候不知道类型,使用时才能确定类型。
// 1. 泛型函数 getNum<K, V>(v1: K, v2:V): [K, V] {return [v1, v2]}
// 2. 泛型接口