建议使用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