Typescript开发文档
Typescript开发文档
吴华锦特性
- 类型批注 和编译时类型检查
- 类型推断
- 类型擦除
- 接口
- 枚举
enum mixin- 泛型编程
- 名字空间
- 元组
tuple
类型
boolean布尔值number数值string字符串anyarray数组tuple元组enum枚举undefinednullvoid空类型 方法没有返回值never任何类型的子类型 代表不会出现的值object对象基本类型 增加
voidanyenumnever引用类型
高级类型
- 交叉类型
- 联合类型
- 类型别名
- 类型索引
- 类型约束
- 类型映射
- 条件类型
交叉类型
& 将多个类型合并为一个类型 并 T & U 表示 T 和 U 的交集
1 | function extend<T, U>(first: T, second: U): T & U { |
联合类型
多个类型中的任意一个 或 T | U 表示 T 或 U 不能共存
1 | function formatCommandline(command: string | string[]) { |
类型别名
type
1 | type name = string | boolean; |
类型索引
keyof 类似 Object.keys()
1 | interface Button { |
类型约束
extends
1 | type BaseType = string | number | boolean; |
类型约束经常和类型索引一起使用
1 | function getValue<T, K extends keyof T>(obj: T, key: K): T[K] { |
类型映射
in
1 | type Readonly<T> = { |
条件类型
T extends U ? X : Y
TypeScript 接口 应用场景
- 继承
枚举类型
被命名的常数集合
TypeScript 中 const 和 readonly 的区别 枚举和常量枚举的区别
const防止变量被修改readonly防止变量属性被修改
枚举
常量枚举 编译阶段会被删除 被内敛
接口
类型别名 都可以用来描述对象或函数类型 可以用于其他类型 基本类型 联合类型 元组
any:动态类型变量 失去了类型检查的作用never:永远不存在的值的类型- 抛出异常 根本没有返回值的函数表达式 或箭头函数表达式返回值类型
unknown:任何类型的值都可以赋值给unknown,unknown类型只能赋值给any类型或者unknown自身null & undefined:默认是所有类型子类型--strictNullChecks标记null或undefined只能赋值给void或本身void:没有任何类型 函数没有返回值 可以定义为void
interface 给 Function Array Class定义类型
1 | // Function |
TypeScript 中的 this 和 JavaScript 中的 this 有什么差异
- TS:
noImplicitThis: true必须声明this类型 才能在函数或对象中使用this - TS 箭头函数和 JS 中保持一致
设计 Class 的声明
1 | class Greeter{ |
如何联合枚举类型 union 的 key
1 | enum str { |
type 和 interface 的区别
相同点:
- 都可以描述对象或函数
- 都允许扩展
不同点:
type可以声明基本类型 联合类型 元组type可以使用typeof获取实例类型进行赋值- 多个相同的
interface可以自动合并
安装编译工具
1 | "scripts": { |
1 | { |
评论
匿名评论隐私政策







