| 
                            
                                  类型收窄之前只能使用公共方法 JS方法typeof 缺点 
	typeof null —→ objecttypeof 数组 —→ objecttypeof 日期 —→ object a instanceof A : A 是否出现在a的原型链上 缺点 不支持string 、number 、boolean 等原始类型 不支持TS的 自定义类型,如下: 
	
		
			| 1 2 3 | type Person {   name: string } |  
	key in objArray.isArray() ????????类型谓词is重点在 shape is Rect 
	
		
			| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | type Rect = {   width: number   height: number } type Circle = {   center: [number, number]   radius: number } const area = (shape: Rect | Circle): number => {   if(isRect(shape)) {     return shape.width * shape.height   } else {     return Math.PI * shape.radius ^ 2   } } const isRect = (shape: Rect | Circle): shape is Rect => {   return 'width' in shape && 'height' in shape } |  ????????????????可辨别联合要求:T = A | B | C 
	A | B | C … 要有一个相同的属性 type或其它type类型只能为 简单类型A | B | C …的type属性无交集 
	
		
			| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | type Rect = {   type: 'rect',   width: number   height: number } type Circle = {   type: 'circle'   center: [number, number]   radius: number } const area = (shape: Rect | Circle): number => {   if(shape.type === 'rect') {     return shape.width * shape.height   } else {     return Math.PI * shape.radius ^ 2   } } |  
 |