1-1 对象 object (key to type)
const person ={
firstName :'a',
lastName :'b',
age:18
}
object 与any的区别
①object定义更为精确
②object相当于any的子集
1-2 interface
高内聚、低耦合:功能相关的事物放在同一个集合中形成一个模块,模块是互相独立的,不同的模块之间应该保持低耦合的状态
let drawPoint = (point) =>{
console.log(point.x,point.y)
}
drawPoint({x:105,y:23});
interface Point {
x:number;
y:number;
}
1-3 class
interface IPoint {
x:number;
y:number;
drawPoint:() => void;
getDistances:(p:IPoint) => number;
}
class Point implements IPoint{
//x:number;
//y:number;
constructor(pulic x:number,pulic y:number){
this.x = x;
this.y = y;
}
drawPoint = () =>{
console.log("x:",this.x,"y:",this.y)
}
getDistances =(p:IPoint) =>{
return Math.pow(p.x - this.x,2) + Math.pow(p.y - this.y,2)
}
}
const point = new Point(2,3) //对象(object),实例instance
point.drawPoint()
注意
①js的构造函数不可以重载(overlord),ts可以
②通过使用访问修饰符 pulic、private、protected顺便完成成员变量的声明和初始化,不可以使用参数缺省(?)的方法
1-4 访问修饰符
Public:所有定义成public的属性和方法都可以在任何地方进行访问,默认就是public。
Private:所有定义成private的属性和方法都只能在类定义内部进行访问,使用set给它赋值,使用get取值。
Protected:多有定义成protected的属性和方法可以从类定义内部访问,也可以从子类中访问。
1-5 module
1-6 泛型(可以用任何一个数字代替,约定俗成是T)
let lastInArray = <T>(arr:Array<T>) =>{
return arr[arr.length - 1];
}
const l1 = lastInArray(["A","b"])
多泛型
let makeTuple = <T,Y>(x:T,y:Y) => [x,y]
const v1 = makeTuple(1,"noe")