Please enable JavaScript.
Coggle requires JavaScript to display documents.
typescript学习 - Coggle Diagram
typescript学习
高级类型
交叉类型
交叉类型是将多个类型合并为一个类型。 type all = a & b & c,相当于all这个类型是a,b,c三类类型组合成的一个类型
联合类型(Union Types)
联合类型是两类类型的或,也就是说type one = a || b,那么one 是a 或者b类型
-
-
-
-
-
-
-
-
映射类型*---重要
-
-
可以用来做一些类似于type Nullable<T> = { [P in keyof T]: T[P] | null }
type Partial<T> = { [P in keyof T]?: T[P] },非常有用
-
索引类型
<T, K extends keyof T>(o: T, propertyName: K): T[K]
-
-
-
-
预定义的有条件类型
Exclude<T, U> -- 从T中剔除可以赋值给U的类型。
Extract<T, U> -- 提取T中可以赋值给U的类型
-
-
-
基础类型
-
-
-
-
Tuple元祖
一个已知元素数量和类型的数组,比如
let x: [string,number] = ["test",123];
-
-
-
-
-
Never
never类型表示的是那些永不存在的值的类型,比如总是会抛出异常或者根本没有返回值得函数表达式或箭头函数表达式的返回值类型。比如抛出的异常,还有相应的深度循环loop函数,永远不会到达终点while(true)
-
-
-
注意,请使用类型(Number, String, Boolean, Symbol 和 Object)的小写版本,
接口
-
-
-
-
-
类类型
-
类静态与实例部分的区别
当使用类和接口时,是会被区分为静态部分的类型和实例的类型。因为当一个类实现了一个接口时,只会对实例部分进行类型检查,constructor只存在于类的静态部分,所以不再检查的范围内。如果要实现相应的接口中的构造函数部分的话,我们需要创建一个构造函数来创建实例。
-
-
接口继承类???
当接口继承了一个类类型时,它会继承类的成员但不包括其实现,这样对于一些大型的类型继承来讲,当父类只有相应的私有属性的时候,我们只需要将相应的特殊的实现放在子类中就好。子类之间不需要关联,但是个人觉得这样好像用处不大。
-
类型兼容
对象
首先,ts的类型兼容是处于鸭子类型,只要属性实质兼容就好,不需要相应的名字相同。那么也就是说赋值{name: string ,value: number} 的那一方的属性需要多于被赋值的另一方{name: string}。赋值正确。反之不行,对象名并不重要。只关心属性名。
函数
-
-
-
函数兼容,函数兼容不要求属性名相同,只要类型一方与另一方是子集或者相同的情况。
类
-
类的私有成员和受保护成员
类的私有成员和受保护成员会影响兼容性。 当检查类实例的兼容时,如果目标类型包含一个私有成员,那么源类型必须包含来自同一个类的这个私有成员。 同样地,这条规则也适用于包含受保护成员实例的类型检查。 这允许子类赋值给父类,但是不能赋值给其它有同样类型的类。
-
-
-
-
do and don‘t
不要使用原生的Number,String之类的来定义类型。它们指的是非原始的装盒对象
-
-
-
-
-
-