CMeUp

记录一些学习心得,QQ:1139723651.

在与后端对接接口过程中我们发现,swagger 作为一种接口文档描述方案,对于前后端接口逻辑对齐是很有帮助的。因此,基于 swagger 生成对应的 ts 代码,能极大提高开发效率,降低出错可能性。

阅读全文 »

官网原文

Docker 能够通过 Dockerfile 文件中的指令来自动构建镜像。一个 Dockerfile 文件是一个包含用户能够调用所有命令去构建新的镜像的文档的集合。使用 docker build 命令,用户可以创建一个基于连续的指令而自动构建镜像。

这篇文章描述了能在 Dockerfile 中使用的指令。当你完成阅读这篇文章,可以看看 Dockerfile 最佳实践,作为提示导向的指导。

阅读全文 »

在春节放假前夕,业务似乎没有那么忙了。在空余时间里,又思考了下:后端方案选型。当然,作为一个 FEer,我没有使用过除了 Node.js 以外的其他方案做过后端开发,对于其他语言的思考,也只能通过网络搜索、相关帖子等信息,结合多方的探讨,来获取我需要的答案。本文也是通过结合网络上大家的讨论及自己的思考,总结出来的。

由于后端方案也是技术方案,因此下文将讨论:技术方案选型

通常来说,技术方案选型包括了:开发语言是什么?选用的框架是什么?周边设施完善度?

那么技术方案如何选型呢?

阅读全文 »

关键词

  • keyof、typeof
  • T extends any ? U : Y
  • infer
  • 协变、抗变、双变、不变(最后一个本文没提到,参考文章中有)

一来就 show you code~

如果下面这些都能看懂且理解,那么恭喜你,你不用继续看本文了,see you next time 😄 ~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 这几个是根据官网的用例,自己写的,貌似跟官方的基本一致
type MyPartial<T> = {[U in keyof T]?: T[U]};
type MyReadonly<T> = {readonly [U in keyof T]: T[U]};
type MyRecord<K extends keyof any, V> = { [Key in K]: V}
type MyPick<Type, Keys extends keyof Type> = {[K in Keys]: Type[K]};
type MyExtract<Type, Union> = Union extends Type ? Union : never;
type MyNonNullable<Type> = Type extends void ? never : Type;
type MyParameters<Type extends (...args: any[]) => any> = Type extends (...args: infer I) => any ? (I) : never;
type MyConstructorParameters<Type> = Type extends new (...args: infer I) => any ? (I) : never;
type MyReturnType<Func> = Func extends (...args: any[]) => infer R ? R : never;
// 下面这些是文章 "ts 疑难杂症" 中拷贝过来的
type PromiseInnerType<T extends Promise<any>> = T extends Promise<infer P>
? P
: never
// string
type Test = PromiseInnerType<Promise<string>>
// 联合类型改为交叉类型
type UnionToIntersection<U> = (U extends any
? (k: U) => void
: never) extends ((k: infer I) => void)
? I
: never
// { a: string } | { b: number } => { a: string } & { b: number }
type Test = UnionToIntersection<{ a: string } | { b: number }>
type Prettify<T> = T extends infer U ? { [K in keyof U]: U[K] } : never
// { a: string; b: number; c: boolean }
type Param = Prettify<{ a: string } & { b: number } & { c: boolean }>

如果有一两个不懂的,那么请点击目录快速进入你想瞅一下的~


阅读全文 »

今天分享的内容主要是 flutter 中很基础的一个概念:尺寸与限制。

当然,这里并不是说尺寸、限制的实现,在 flutter 中就是采用 Container,这里只是以 Container 为例。下面将跳出与 web 的比较,直接讲述 flutter 中的尺寸限制。

阅读全文 »
0%