这是我参与「第四届青训营 」笔记创作活动的第9天
TypeScript入门
基本语法
基本数据类型
- /字符串/ const q = 'string '; const q: string = 'string ' ;
- /数字/ const w = 1; const w: number = 1;
- /布尔值/ const e = true; const e: boolean = true;
- /null/ const r = null; const r: null = null;
- /undefined/ const t = undefined; const t: undefined = undefined;
对象类型
const bytedancer: IBytedancer = {
jobId: 9303245,
name: "Lin',
sex: 'man ' ,
age: 28,
hobby: 'swimming " ,
}
interface IBytedancer {
//只读属性:约束属性不可在对象初始化外赋值
readonly jobId: number;
name: string;
sex: 'man'|'woman'| 'other';
age: number;
//可选属性:定义该属性可以不存在
hobby?: string;
//任意属性:约束所有对象属性都必须是该属性的子类型
[key: string]: any;
}
函数类型
function add(x, y){
return x +y;
}
const mult = (Y)→>*y;
interface IMult {
(x: number, y: number) : number;
}
const mult: IMult =(x, y)→>*y;
function add(x: number, y: number): number {
return x +y;
}
const mult: (x: number,y: number) =>number = (x, y)→>X* y;
数组类型
/「类型+方括号」表示/
type IArr1 = number[];
/泛型表示/
type IArr2 = Array<string | number | Record<string,number>>;
/元祖表示/
type IArr3 = [number,number,string,string];
/接口表示/
interface IArr4 {
[key: number]: any;
}
/举例/ const arr1: IArr1 = [1,2,3,4,5,6]; const arr2: IArr2 = [1,2,'3','4', { a: 1 }];const arr3: IArr3 = [1,2,'3','4']; const arr4: IArr4 = [ 'string', (=>null,i,[];
TypeScript补充类型
/空类型,表示无赋值/
type IEmptyFunction = (=> void;
/任意类型,是所有类型的子类型/
type IAnyType = any;
/枚举类型:支持枚举值到枚举名的正、反向映射/
enum EnumExample {
add = '+',
mult = '*',
}
EnumExample [ 'add ' ] == '+';
EnumExample['+'] === 'add ' ;
enum ECorlor { Mon,Tue,wed,Thu,Fri,Sat,Sun };
ECorlor ['Mon' ] == 0;
ECorlor[0] =s='Mon ' ;
/泛型/
type INumArr = Array<number>;
TypeScript泛型
function getRepeatArr(target){
return new Array ( 100).fill(target);
}
type IGetRepeatArr = (target: any) -=>any [];
/*不预先指定具体的类型,而在使用的时候再指定类型的一种特性*/type IGetRepeatArrR =<T>(target: T)→>T[];
/泛型接口&多泛型/
interface IX<T,U> {
key: T;
val: U;
}
/泛型类/
class IMan<T>{
instance: T;
}
/泛型别名/
type ITypeArr<T> = Array<T>;
/泛型约束:限制泛型必须符合字符串/
type IGetRepeatStringArr = <T extends string>(target: T) => T[];
const getStrArr: IGetRepeatStringArr = target => new Array(100).fill(target);
/报错:类型"number"的参数不能赋给类型"string"的参数/
getStrArr(123);
/泛型参数默认类型/
type IGetRepeatArr<T = number> = (target: T)=>T[];
const getRepeatArr: IGetRepeatArr = target => new Array(100).fill(target);
/报错:类型"string"的参数不能赋给类型"number"的参数/
getRepeatArr( '123');