09年注册了竹喧论坛,自此之后贴吧推荐的言情小说找不到下载的地方大多去这个论坛下,等上班后慢慢去的少了,甚至已经忘记了什么时候不关注了。可能是等智能手机发展开来,贴吧啊论坛啊慢慢间落寞了。昨天突然想起来了,手机怎么也登不上,今天休息下午又想起了这个事情立马开电脑,还是那个熟悉的页面,只是显示登录错误,重置密码需要邮箱,试了一下不是QQ邮箱而是上学时候用的126邮箱,然而邮箱也很多年不登,幸好密码还对各种验证,申请邮箱时的手机号还是上学时候的,最终也没能变更回来。最终历经磨难终于登上了,发现还不能评论,需要邮箱验证发到126邮箱竟然收不到邮件,又换了QQ邮箱,最后完美解决,心里空落的那一块稍稍被填了一些。那些年活跃在论坛的小伙伴都不见了踪影。连论坛的创始人ID1的,我特地去找了,也显示一年没在线了,还有一位我的同龄人,15年之后再也没在线过。曾经都以论坛为家的,就这样不知不觉走散了。就像人人网风靡的农场,半年一年后QQ农场牧场才开始流行开来,天天都睡不好觉想着多偷几棵菜,多种几种好看的植物。曾几何时QQ的农牧场都下线了,就如同我们的青春一去不复返。感慨了会,没想到竟然一只小强在我房间出现了,立马喊妈来抓,再回来时小强跑不见了,那一点哀愁也随之消散了。
#nct西珍妮[超话]# 避雷 闲鱼用户
id1: tb695149407 链接在就在别问了
id2: tb520872146 休斯顿奇妙的山茶
今天有姐妹私信我,我才发现前两天出的一张银卡被倒卖了,瑕疵情况和我和卡一模一样,这样明显的瑕疵也不可能会有完全一样的吧?可见图一。
图二是出卡记录,2k5也是捆了20张小卡以后的价格,结果这位直接三千以上带价排,如图三。
本来以为这位【链接在就别问了】也是高价受害者,但是搜索两人的主页发现,一样的图,是一个人吧?见图四。
8.17收到卡之后开开心心展示,8.19就直接高价转手。本来以为是真的喜欢在玹的同担,没有想到也是个商人。
在她拍下之后,我也有强调希望不要再去倒卖,她也答应了,这才几天啊就迫不及待赚大钱了。见图五。
希望真的想收萱萱银卡的朋友,不要因为迫切就给二道贩子可乘之机,多蹲一蹲也许就能收到好价的。
id1: tb695149407 链接在就在别问了
id2: tb520872146 休斯顿奇妙的山茶
今天有姐妹私信我,我才发现前两天出的一张银卡被倒卖了,瑕疵情况和我和卡一模一样,这样明显的瑕疵也不可能会有完全一样的吧?可见图一。
图二是出卡记录,2k5也是捆了20张小卡以后的价格,结果这位直接三千以上带价排,如图三。
本来以为这位【链接在就别问了】也是高价受害者,但是搜索两人的主页发现,一样的图,是一个人吧?见图四。
8.17收到卡之后开开心心展示,8.19就直接高价转手。本来以为是真的喜欢在玹的同担,没有想到也是个商人。
在她拍下之后,我也有强调希望不要再去倒卖,她也答应了,这才几天啊就迫不及待赚大钱了。见图五。
希望真的想收萱萱银卡的朋友,不要因为迫切就给二道贩子可乘之机,多蹲一蹲也许就能收到好价的。
Typescript-泛型(第二部分)
//接口泛型与类泛型
/* interface id {
id1: T;
id2: U;
}
class MyComponent extends React.Component {
} */
//注:
/*
总结下就是: 泛型的写法就是在标志符后面添加尖括号(<>),
然后在尖括号里写形参,并在 body(函数体, 接口体或类体) 里用这些形参做一些逻辑处理。
*/
//泛型的参数类型
//1 泛型约束
//对函数的参数进行限定
/* function trace(arg: T): T {
console.log(arg);
//console.log(arg.size)//报错:错误:类型“t”上不存在属性“size”
return arg;
} */
//注:
//trace函数,用于调试程序
//使用接口
interface Sizeable {
size: number;
}
function trace(arg: T): T {//T继承了size
console.log(arg.size);
return arg;
}
//常见的泛型
// 1集合类
const a: Array = ["1"];
//注:
/*
类似 Array 这种写法,是集合类,也是一种泛型
本质上数组就是一系列值的集合,这些值可以可以是任意类型,数组只是一个容器而已。
然而平时开发的时候通常数组的项目类型都是相同的,如果不加约束的话会有很多问题。
比如我应该是一个字符串数组,然是却不小心用到了 number 的方法,这个时候类型系统应该帮我识别出这种类型问题。
由于数组理论可以存放任意类型,因此需要使用者动态决定你想存储的数据类型,并且这些类型只有在被调用的时候才能去确定。
Array 就是调用,经过这个调用会产生一个具体集合,这个集合只能存放 string 类型的值。
*/
//泛型嵌套函数:
//type CutTail = Reverse>>;
//注:
/*
如上代码中, Reverse 是将参数列表反转,CutHead 是将数组第一项切掉。因此 CutTail 的意思就是将传递进来的参数列表反转,
切掉第一个参数,然后反转回来。换句话说就是切掉参数列表的最后一项。
比如,一个函数是 function fn (a: string, b: number, c: boolean):boolean {},
那么经过操作type cutTailFn = CutTail,可以返回(a: string, b:number) => boolean。
*/
//泛型递归
//泛型甚至可以嵌套自己从而形成递归,比如我们最熟悉的单链表的定义就是递归的。
type ListNode = {
data: T;
next: ListNode | null;
};
/*
上面是递归声明,我们再来看一个更复杂一点的递归形式 - 递归调用,这个递归调用的功能是:递归地将类型中所有的属性都变成可选。
类似于深拷贝那样,只不过这不是拷贝操作,而是变成可选,并且是作用在类型,而不是值。
*/
type DeepPartial = T extends Function
? T
: T extends object
? { [P in keyof T]?: DeepPartial }
: T;
type PartialedWindow = DeepPartial; // 现在window 上所有属性都变成了可选了
//接口泛型与类泛型
/* interface id
id1: T;
id2: U;
}
class MyComponent extends React.Component
} */
//注:
/*
总结下就是: 泛型的写法就是在标志符后面添加尖括号(<>),
然后在尖括号里写形参,并在 body(函数体, 接口体或类体) 里用这些形参做一些逻辑处理。
*/
//泛型的参数类型
//1 泛型约束
//对函数的参数进行限定
/* function trace
console.log(arg);
//console.log(arg.size)//报错:错误:类型“t”上不存在属性“size”
return arg;
} */
//注:
//trace函数,用于调试程序
//使用接口
interface Sizeable {
size: number;
}
function trace
console.log(arg.size);
return arg;
}
//常见的泛型
// 1集合类
const a: Array
//注:
/*
类似 Array
本质上数组就是一系列值的集合,这些值可以可以是任意类型,数组只是一个容器而已。
然而平时开发的时候通常数组的项目类型都是相同的,如果不加约束的话会有很多问题。
比如我应该是一个字符串数组,然是却不小心用到了 number 的方法,这个时候类型系统应该帮我识别出这种类型问题。
由于数组理论可以存放任意类型,因此需要使用者动态决定你想存储的数据类型,并且这些类型只有在被调用的时候才能去确定。
Array
*/
//泛型嵌套函数:
//type CutTail
//注:
/*
如上代码中, Reverse 是将参数列表反转,CutHead 是将数组第一项切掉。因此 CutTail 的意思就是将传递进来的参数列表反转,
切掉第一个参数,然后反转回来。换句话说就是切掉参数列表的最后一项。
比如,一个函数是 function fn (a: string, b: number, c: boolean):boolean {},
那么经过操作type cutTailFn = CutTail
*/
//泛型递归
//泛型甚至可以嵌套自己从而形成递归,比如我们最熟悉的单链表的定义就是递归的。
type ListNode
data: T;
next: ListNode
};
/*
上面是递归声明,我们再来看一个更复杂一点的递归形式 - 递归调用,这个递归调用的功能是:递归地将类型中所有的属性都变成可选。
类似于深拷贝那样,只不过这不是拷贝操作,而是变成可选,并且是作用在类型,而不是值。
*/
type DeepPartial
? T
: T extends object
? { [P in keyof T]?: DeepPartial
: T;
type PartialedWindow = DeepPartial
✋热门推荐