11条带你走进typeScript

111 阅读1分钟

建议使用vscode编译代码, 提示友好

1. const a: string = 'a'(基础类型: number, string, boolan, null, undefined, symbol)

2. 对象类型

对象const obj: { a: string, b: number } = { a: 'xx', b: 1 }; 数组const arr: (string | number)[] = ['a','b',1,2](元数组const arr: [string, number, string] = ['a',1,'b']) 类class Person {}; const p: Person = new Person(); 函数const fn: () => string = () => 'xxx';

3. 函数形参结构 function fn ({ name, age }: { name: string, age: number }) {}

4. 接口inteface-重复的类型注解

interface Girl { name: string; age: number; hobby?: string; // 可选 [propName: string]: any; // 任意值 } function fn({name, age}: Gril) {} 接口继承 : interface Teacher extends Girl { teach(): string; }

5. 类型别名 type (定义别名的时候要以type关键字开始, 直接给类型, string,number...; 接口必须代表对象) type Girl1 = stirng;

6. 联合类型 |

interface A { }; interface B {}; function fn(param: A | B) {};

7. 类型保护 typeof

function(a: string|number, b: string|number) { if(typeof a === 'string' && typeof b === 'string') { return ${a}${b} } else { return a + b } }

8. 枚举类型 enum

enum Status { SUCCESS, WARNING, ERROR } console.log(Status.SUCCESS) // 0

9. 泛型<>定义(<T, P> T, P代表名称)

函数中多个泛型: function fn<T, P>(a: T, b: P) { return ${a}${b} } join<string, number> (1, 'a') 类中泛型: class A { constructor(private arr: T[]) } // let a = new A(['1', '2', '3']) 类型推断出来的 interface G { name: string; }; class B {...} 实例数据中要有name字段 class C <T extends string | number> {} 泛型约束为strng或number

10. namespace 命名空间

11. 使用jquery npm i @types/jquery