TypeScript
2019-02-24 16:51:32 32 举报
AI智能生成
TypeScript官网手册学习思维导图
作者其他创作
大纲/内容
BasicTypes
Boolean
true/false
Number
二进制
八进制
十进制
十六进制
String
单引号
双引号
反引号/模板字符串
Symbol
ES6基础类型
Null
任意类型子类型
Undefined
任意类型子类
Enum
number
string
Objet
Array
Tuple
Any
逐步使用/退出,TypeScript
Never
任意类型子类型
Void
死循环
抛异常
类型断言
(<类型>变量)
(变量as类型)
Interfaces
Optional Properties
TypeScript的接口是宽松的(lenient),只需要传递接口中声明了的属性即可
可选属性,描述可能出现的属性,阻止使用接口未定义的属性,属性名后面加?表示为可选属性
Readonly Properties
只读属性,只能在初始化的时候被改变
属性用readonly,变量用const
ReadonlyArray,ReadonlySet,ReadonlyMap
( all mutating methods removed, )所有的改变方法都被移除了
下标赋值,set等等
( all mutating methods removed, )所有的改变方法都被移除了
下标赋值,set等等
Excess Property Checks
/**
* 过量类型检查,excess property checks
* 可以使用类型断言(as)绕过,或者使用字符串索引绕过
* 尽量不要绕过excess property checks,
* 这些检查能帮你检查出潜在的BUG
*/
* 过量类型检查,excess property checks
* 可以使用类型断言(as)绕过,或者使用字符串索引绕过
* 尽量不要绕过excess property checks,
* 这些检查能帮你检查出潜在的BUG
*/
Function Types
/**
*函数类型接口,类似于C#的委托,C/C++的函数指针,Java的函数式接口
* 限制:一个接口只能定义一个方法类型,且不能重载
*可定义其他带有名字的方法,以及属性
*/
*函数类型接口,类似于C#的委托,C/C++的函数指针,Java的函数式接口
* 限制:一个接口只能定义一个方法类型,且不能重载
*可定义其他带有名字的方法,以及属性
*/
Indexable Types
/**
* 只支持number以及string索引
* number索引返回的类型必须是string索引的子类
* 因为number索引的本质也是string索引,例如a[10]等价于a['10']
* string索引能实现字典模式,可以强制对象所有的属性与索引的返回类型一致
* 索引可以设置为只读,防止修改索引的值
*/
* 只支持number以及string索引
* number索引返回的类型必须是string索引的子类
* 因为number索引的本质也是string索引,例如a[10]等价于a['10']
* string索引能实现字典模式,可以强制对象所有的属性与索引的返回类型一致
* 索引可以设置为只读,防止修改索引的值
*/
Class Types
/**
* 接口能定义属性,方法
* 强制类实现
* 类有两种类型,
* (类的本质也是一个Function实例,Function实例可以拥有自身的属性,methods)
* 静态端:静态属性,静态方法,constructor
* 实例端:实例属性,原型方法,实例方法
*/
* 接口能定义属性,方法
* 强制类实现
* 类有两种类型,
* (类的本质也是一个Function实例,Function实例可以拥有自身的属性,methods)
* 静态端:静态属性,静态方法,constructor
* 实例端:实例属性,原型方法,实例方法
*/
Extending Interfaces
/**
* 接口能继承接口,并且能多继承
* 可以自由组合
* 类似于C#,Java
*/
* 接口能继承接口,并且能多继承
* 可以自由组合
* 类似于C#,Java
*/
Hybird Types
/**
* 接口可以进行混合,即在接口中声明一个函数类型,然后再声明其他属性,方法
* 既可以是函数(就是函数类型/函数式接口),也可以是实例对象
* 例如,jQuery 既是一个对象,也是一个函数,很多第三方库也是这样
*/
* 接口可以进行混合,即在接口中声明一个函数类型,然后再声明其他属性,方法
* 既可以是函数(就是函数类型/函数式接口),也可以是实例对象
* 例如,jQuery 既是一个对象,也是一个函数,很多第三方库也是这样
*/
Interfaces Extending Classes
/**
* 接口可以继承类
* 相当于,接口将类的所有成员重新声明了一遍,但没有实现
* 包括private,protected的成员
* 这意味着,只有基类,以及基类的子类可以实现该接口
* 相当于对接口的实现做了一种限制,不可随意实现
*/
* 接口可以继承类
* 相当于,接口将类的所有成员重新声明了一遍,但没有实现
* 包括private,protected的成员
* 这意味着,只有基类,以及基类的子类可以实现该接口
* 相当于对接口的实现做了一种限制,不可随意实现
*/
0 条评论
下一页