仅记录个人觉得很实用的地方
一.基础类型
1.布尔值
let isDone :boolean = false;
2.数字
3.字符串
4.never
5.元组
let x:[string,number] = ['hello',2104]
6.枚举enum
enum Corlor {Red = 0,Green = 1,Blue = 2}
let c:corlor = Color.Green
7.any
8.void
9.null、undefined
二.类型断言
三联合类型
let union : string | number
四.接口interface
1.对类的的行为进行部分抽象以外
2.对对象的形状进行描述 (类似于自定义变量的类型)
可选属性:?
任意属性:[]
只读属性:readonly,在第一次给对象赋值的时候可以,以后只读
interface Person {
readonly name:string,
age?:number,
[properName:string]:any,
}
五.数组的类型
let arr : number[] = [1,2,3];
let arr2 : Array[number] = [1,2,3]
六.类型断言
1.let length = (<string>someValue).length
2.let length = (someValue as string).length
声明文件
1.declare 定义的类型只会用于编译时的检查,编译结果中会被删除
- .d.ts类型声明文件.
- 在使用到的文件开头,用'三斜线指令',表示引入了类型定义文件///<reference path="./jQuery.d.ts">
- 第三方声明文件
TypeScript 2.0 推荐使用 @types 来管
理。
@types 的使用方式很简单,直接用 npm 安装对应的声明模块即可,以 jQuery 举例:
npm install @types/jquery --save-dev
可以在这个页面搜索你需要的声明文件。http://microsoft.github.io/TypeSearch/
七:内置对象
八:类型别名
type Name = string;
九:字符串字面量类型
约定取值只能是某字符串的几个
type EventNames = 'click' | 'scroll' | 'mousemove'
function handleEvent (ele:Element,event:EventNames) {
}
}
十:元组
数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。
let xcatliu: [string, number] = ['Xcat Liu', 25];
十一:枚举
枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,
颜色限定为红绿蓝等。
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
可手动赋值
十二:类
类(Class):定义了一件事物的抽象特点,包含它的属性和方法
对象(Object):类的实例,通过 new 生成
面向对象(OOP)的三大特性:封装、继承、多态
封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。
外界调用端不需要(也不可能)知道细节,就能通过对外提供的接口来访问该
对象,同时也保证了外界无法任意更改对象内部的数据
继承(Inheritance):子类继承父类,子类除了拥有父类的所有特性外,还有
一些更具体的特性
多态(Polymorphism):由继承而产生了相关的不同的类,对同一个方法可以
有不同的响应。比如 Cat 和 Dog 都继承自 Animal ,但是分别实现了自
己的 eat 方法。此时针对某一个实例,我们无需了解它是 Cat 还是
Dog ,就可以直接调用 eat 方法,程序会自动判断出来应该如何执行
eat
存取器(getter & setter):用以改变属性的读取和赋值行为
修饰符(Modifiers):修饰符是一些关键字,用于限定成员或类型的性质。比
如 public 表示公有属性或方法
抽象类(Abstract Class):抽象类是供其他类继承的基类,抽象类不允许被
实例化。抽象类中的抽象方法必须在子类中被实现
接口(Interfaces):不同类之间公有的属性或方法,可以抽象成一个接口。接
口可以被类实现(implements)。一个类只能继承自另一个类,但是可以实现
多个接口
1.三种访问修饰符(Access Modifiers),分别是
public 、 private 和 protected
2.抽象类
1)抽象类是不允许被实例化的 2)抽象类中的抽象方法必须被子类实现
abstract class Animal {
public name;
public constructor(name) {
this.name = name;
}
public abstract sayHi();
}
class Cat extends Animal {
public sayHi() {
console.log(`Meow, My name is ${this.name}`);
}
}
let cat = new Cat('Tom');
十三:类与接口
1.类实现接口
interface Alarm {
alert();
}
class SecurityDoor extends Door implements Alarm, Light {
alert() {
console.log('SecurityDoor alert');
}
}
2.接口继承接口,接口继承类
十四:泛型
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而
在使用的时候再指定类型的一种特性。
function createArray<T>(length: number, value: T): Array<T> {
let result = [];
for (let i = 0; i < length; i++) {
result[i] = value;
}
return result;
}
createArray(3, 'x'); // ['x', 'x', 'x']
泛型约束
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}
网友评论