TypeScript详解(安装使用、基础类型总结、类型断言用法、接口、类、函数、泛型、相同类型之间赋值、unknown、枚举等)
https://blog.csdn.net/AIWWY/article/details/123230874
1 interface Iperson { 2 name: string; 3 age: number; 4 getName: () => string; 5 getAge(): number; 6 } 7 //类实现接口. implements 8 class person implements Iperson { 9 name: string = "John"; 10 age: number; 11 getName(): string { 12 return this.name; 13 } 14 getAge(): number { 15 return this.age; 16 } 17 } 18 19 //类型断言 20 function add(a: string | number, b: string | number): number { 21 // return a + b; //会报错,因为不确定类型 22 // if(typeof a === 'string') { //常规js操作 23 // return a.length 24 // } 25 if ((a as string).length) { 26 // return (a as string).length //断言方法 or 27 return (<string>a).length; 28 } else { 29 return a.toString().length; 30 } 31 } 32 33 // 非空断言 (和三元表达式一样) 34 function getI(a?: string): number { 35 // return a ? a.length : 0 36 return a!.length; //非空断言 37 } 38 getI(); 39 40 //枚举(赋值) 和反向映射 41 enum Color { 42 red, 43 green, 44 yellow = 10 45 } 46 Color.red //0 47 Color[0] // red 反向映射 48 49 //泛型 50 function identity<T>(arg: T): T { 51 return arg; 52 } 53 let output = identity<string>("myString"); // type of output will be 'string' 54 55 function funa<T>(a: T, b: T): number { 56 // if(typeof a === 'number' && typeof b === 'number') {} 57 return a + b //Error 运算符“+”不能应用于类型“T”和“T”。 58 } 59 funa<number>(3, 3) 60 61 62 63 function loggingIdentity<T>(arg: T): T { 64 console.log(arg.length); // Error: T doesn't have .length 65 return arg; 66 } 67 loggingIdentity<number>(3)