TS 记录
基本使用不做过多深入,能用就行
创建单文件
// 运行
// demo.ts tsc demo.ts 转成js node demo.js
数据类型声明 TS 基础类型 文档
// 声明数据类型 没有表明类型的会类型判断,使用TS就按TS的特点来写就不要JS习惯来写
// 以下都是表明类型 格式 变量名:类型, 表明是什么类型的取值就要对应上
let num : number = 10; // num = "a"; 这样会报错了
let str : string = '字符串';
let bool : boolean = true;
let nul : null = null;
let und : undefined = undefined;
// 联合类型 两个以上用 | 隔开
let id: number | string;
// 任意类型 这个就灵活,没有了类型安全的检测,少用
let anyValue : any = '';
anyValue = 10; // = []; // = {};
console.log(anyValue);
console.log(anyValue as number); // 类型断言
数组
// 数组声明类型 指定类型
let numArr:number[] = [1]; //
// 泛型数组
let arr_n: Array<number> = [1,2];
let arr_n_s: Array<number | string> = [1,2,'a','b'];
// Array<any> 和 any[] 写法不一样,效果一样
let arr_any: Array<any> = [1,2,'a','b'];
对象
// 对象类型 , 如果类型不定给 any 所有类型
let obj : {id:number, name: string} = {
id: 1,
name: 'abc'
}
// 类型别名
type Obj_1 = {
id: number,
name: string
}
let obj_1 : Obj_1 = {
id: 1,
name: 'abc',
}
type Obj_2 = {
age: number;
}
// 交叉类型 type Obj_1_Obj2 = Obj_1 & Obj_2;
let obj_1_2 : Obj_1 & Obj_2 = {
id: 1,
name: 'abc',
age: 18
}
接口类型
/ 接口 类型
interface User {
id: number;
name: string;
age?: number; // 可选字段
}
// 使用 接口 User类型
let user: User = {
id: 1,
name: 'abc'
}
函数
// 函数
// 有返回 就标明返回类型,无返回就 : void 或不写
function fun(x: number, y : number) : number {
return 1;
}
fun(1,2); // fun(1,'2')这个就会报错
let fun1 = (n: string) : string => {
return n;
}
let fun2 : (n: string) => string;
fun2 = (n) => {
return n;
};
// 接口类型作参数
function fun3(user: User) {
console.log(user);
}
fun3(user)
// 泛型
function res<T>(arg: T) : T {
return arg;
}
res<User>(user);
// constructor
// extends abstract
// public private protected readonly static
class Person {
id: number;
name: string;
constructor(id: number = 1, name: string = 'abc') {
this.id = id;
this.name = name
}
getName() {
console.log(this.name);
}
}
let person1 = new Person();
person1.getName()
// 继承
// class 继承者 extends 被继承 {}
class UserReq {
id: number;
name: string;
page?: number;
size?: number;
constructor() {}
toJson(params) : UserReq {
this.id = params.id;
this.name = params.name;
this.page = params.page;
this.size = params.size;
return this;
}
}
class UserRes {
count: number;
list: Array<UserResList>;
}
class UserResList {
id: number;
name: string;
create_time: string;
}
function userFun(req: UserReq) {
console.log(req);
}
userFun(new UserReq().toJson({id: 1,name: 'abc'}))