typescript-infer

介绍

TypeScript是一种静态类型检查器,它可以识别代码中的错误并提供更好的代码提示。它是JavaScript的超集,可以使代码更加健壮和易于维护。在TypeScript 2.8版本中,引入了一个新的关键字“infer”。这个关键字可以帮助我们从函数返回的类型中推断出参数的类型。

Infer的用法

Infer关键字通常与条件类型一起使用。条件类型是一种新的类型语法,它允许根据类型关系的真实性来选择不同的类型。它的语法是“T extends U ? X : Y”。如果T可以赋值给U,那么这个类型为X,否则为Y。

Infer关键字可以用在条件类型中,用于从函数返回的类型中推断出参数的类型。例如,我们可以使用Infer关键字来推断函数的第一个参数的类型。这个参数是一个函数,它返回一个类型。

1
2
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;

自动创建 GitLab Merge Request

最近规范代码提交流程,所有提交必须走 GitLab 的 Merge Request。
所以就很烦,每一个功能改动都要提交三份 MR(test/uat/master),一系列操作下来,人都麻了…
此时就要祭出杀器 Python大法

JavaScript 反射元编程

概念

什么是反射?

计算机学中,反射式编程(英语:reflective programming)或反射(英语:reflection),是指计算机程序运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。

– 来自维基百科

反射就是指程序运行阶段(RunTime)拦截程序,以达到获取、修改自身元数据的目的。这在其他高级语言中是非常常见的概念。

JavaScript 这种动态语言中,反射可以说是无处不在。

我们随时可以去新增、修改对象的属性,甚至可以重新定义对象中的方法,如我们日常使用的 apply 、 defineProperty 操作就属于典型的反射。

Typescript 装饰器

工欲善其事必先利其器

装饰者模式(Decorator Pattern)也称为装饰器模式,即在不改变对象自身的基础上,动态增加额外的职责,属于结构型模式的一种。

使用装饰者模式的优点是把对象核心职责和要装饰的功能分开 ,装饰者模式属于非侵入式的行为修改。

装饰器是一项实验性特性,在未来的版本中可能会发生改变。(来自官网)

虽然目前仅仅是实验性特性,但是装饰器肯定会有,最多变的也是用法,毕竟装饰器在 Java、Python 这种语言中的场景已经足够成熟了。

Less 的一些高级用法

最近发现很多同学在使用 Less 的时候, 仅是为了使用 Less 的 变量、嵌套 以及 module 功能。

虽然 Less 相对于 Sass 来说,移除了很多功能,比如 @if @else @while @for @function等,但是并非是Less 不行,Less 的宗旨是 “Do Less Get More”。

我们可以在简洁的API 支撑下,做到更多的事情。

曾经我是个 Scss 党,现在已经全面转 Less 了。

如何关闭 Alfred 的同步功能

个人感觉 Alfred 提供的同步功能十分鸡肋,在尝试了一番后,两个设备的 workFlow 都出现了不同的问题。

因为两台电脑的环境可能不同,自定义的 workflow 中,package 可能也会找不到。