V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  yuanfnadi  ›  全部回复第 7 页 / 共 35 页
回复总数  699
1 ... 3  4  5  6  7  8  9  10  11  12 ... 35  
@itengfei https://clipper.website
2019-12-13 11:17:38 +08:00
回复了 unii23i 创建的主题 分享创造 有没有一个软件,把你每次复制的东西都整理记录下来
提供一个关键词 剪切板历史
2019-12-13 11:17:20 +08:00
回复了 unii23i 创建的主题 分享创造 有没有一个软件,把你每次复制的东西都整理记录下来
paste
alfred
2019-12-11 11:27:19 +08:00
回复了 DemonQ 创建的主题 程序员 求一个前端开源项目的点子
与其自己造没人用的轮子,不如去贡献已经有的项目。

react,vue,antd,vscode.
2019-12-10 17:56:54 +08:00
回复了 leosirius666a 创建的主题 程序员 作为资深 markdown 程序员,语雀真实太好用了
支持语雀的剪藏插件 https://clipper.website
@582217
@sonyxperia

可以试试看 132 楼的工具。
收集数据可以用 https://clipper.website
开源 + 免费的剪辑插件,多功能可扩展。
支持
+ notion
+ 语雀
+ GitHub
+ 有道云
+ Server 酱
+ Bear
+ 邮箱
+ Kindle
```
interface PathArray<T, L> extends Array<string | number> {
["0"]?: keyof T;
["1"]?: L extends {
["0"]: infer K0;
}
? K0 extends keyof T
? keyof T[K0]
: never
: never;
["2"]?: L extends {
["0"]: infer K0;
["1"]: infer K1;
}
? K0 extends keyof T
? K1 extends keyof T[K0]
? keyof T[K0][K1]
: never
: never
: never;
["3"]?: L extends {
["0"]: infer K0;
["1"]: infer K1;
["2"]: infer K2;
}
? K0 extends keyof T
? K1 extends keyof T[K0]
? K2 extends keyof T[K0][K1]
? keyof T[K0][K1][K2]
: never
: never
: never
: never;
["4"]?: L extends {
["0"]: infer K0;
["1"]: infer K1;
["2"]: infer K2;
["3"]: infer K3;
}
? K0 extends keyof T
? K1 extends keyof T[K0]
? K2 extends keyof T[K0][K1]
? K3 extends keyof T[K0][K1][K2]
? keyof T[K0][K1][K2][K3]
: never
: never
: never
: never
: never;
["5"]?: L extends {
["0"]: infer K0;
["1"]: infer K1;
["2"]: infer K2;
["3"]: infer K3;
["4"]: infer K4;
}
? K0 extends keyof T
? K1 extends keyof T[K0]
? K2 extends keyof T[K0][K1]
? K3 extends keyof T[K0][K1][K2]
? K4 extends keyof T[K0][K1][K2][K3]
? keyof T[K0][K1][K2][K3][K4]
: never
: never
: never
: never
: never
: never;
["6"]?: L extends {
["0"]: infer K0;
["1"]: infer K1;
["2"]: infer K2;
["3"]: infer K3;
["4"]: infer K4;
["5"]: infer K5;
}
? K0 extends keyof T
? K1 extends keyof T[K0]
? K2 extends keyof T[K0][K1]
? K3 extends keyof T[K0][K1][K2]
? K4 extends keyof T[K0][K1][K2][K3]
? K5 extends keyof T[K0][K1][K2][K3][K4]
? keyof T[K0][K1][K2][K3][K4][K5]
: never
: never
: never
: never
: never
: never
: never;
}

type ArrayHasIndex<MinLenght extends number> = { [K in MinLenght]: any };

export type PathArrayValue<
T,
L extends PathArray<T, L>
> = L extends ArrayHasIndex<0 | 1 | 2 | 3 | 4 | 5 | 6 | 7>
? any
: L extends ArrayHasIndex<0 | 1 | 2 | 3 | 4 | 5 | 6>
? T[L[0]][L[1]][L[2]][L[3]][L[4]][L[5]][L[6]]
: L extends ArrayHasIndex<0 | 1 | 2 | 3 | 4 | 5>
? T[L[0]][L[1]][L[2]][L[3]][L[4]][L[5]]
: L extends ArrayHasIndex<0 | 1 | 2 | 3 | 4>
? T[L[0]][L[1]][L[2]][L[3]][L[4]]
: L extends ArrayHasIndex<0 | 1 | 2 | 3>
? T[L[0]][L[1]][L[2]][L[3]]
: L extends ArrayHasIndex<0 | 1 | 2>
? T[L[0]][L[1]][L[2]]
: L extends ArrayHasIndex<0 | 1>
? T[L[0]][L[1]]
: L extends ArrayHasIndex<0>
? T[L[0]]
: never;

export type Path<T, L> = PathArray<T, L> | keyof T;

export type PathValue<T, L extends Path<T, L>> = L extends PathArray<T, L>
? PathArrayValue<T, L>
: L extends keyof T
? T[L]
: any;

declare function path<T, L extends Path<T, L>>(
object: T,
params: L
): PathValue<T, L>;

const obj = {
v: {
w: { x: { y: { z: { a: { b: { c: 2 } } } } } },
ouch: true,
foo: [{ bar: 2 }, { bar: 3 }]
}
};

const output: number = path(obj, ["v", "w", "x"]); // 💥
const output2: object = path(obj, ["v", "w", "x"]); // ✔️
const output4: { c: string } = path(obj, ["v", "w", "x", "y", "z", "a", "b"]); // 💥
const output3: { c: number } = path(obj, ["v", "w", "x", "y", "z", "a", "b"]); // ✔️
const output5: "wrong" = path(obj, ["v", "w", "x", "y", "z", "a", "b", "c"]); // ✔️ since after 7 levels there is no typechecking

const x = path(obj, ["v", "ouch", "x"]); // 💥
const y = path(obj, ["v", "ouch", "y"]); // 💥
const z = path(obj, ["v", "ouch", "somethingCompletelyDifferent"]); // 💥

path(obj, "!"); // 💥
path(obj, ["!"]); // 💥
path(obj, ["v", "!"]); // 💥
path(obj, ["v", "w", "!"]); // 💥
path(obj, ["v", "w", "x", "!"]); // 💥
path(obj, ["v", "w", "x", "y", "!"]); // 💥
path(obj, ["v", "w", "x", "y", "z", "!"]); // 💥
path(obj, ["v", "w", "x", "y", "z", "a", "!"]); // 💥
path(obj, ["v", "w", "x", "y", "z", "a", "b", "!"]); // ✔️ since after 7 levels there is no typechecking
path(obj, "v"); // ✔️
path(obj, ["v"]); // ✔️
path(obj, ["v", "w"]); // ✔️
path(obj, ["v", "w", "x"]); // ✔️
path(obj, ["v", "w", "x", "y"]); // ✔️
path(obj, ["v", "w", "x", "y", "z"]); // ✔️
path(obj, ["v", "w", "x", "y", "z", "a"]); // ✔️
path(obj, ["v", "w", "x", "y", "z", "a", "b"]); // ✔️
path(obj, ["v", "w", "x", "y", "z", "a", "b", "c"]); // ✔️
```
一个月一天就够了。

hexo + 小程序(webview) + 安卓 (webview)
2019-10-19 16:12:33 +08:00
回复了 Poto 创建的主题 程序员 [调查] 大家如何管理电脑的文件
+ 音乐用 itunes 管理
+ 代码用 projj
+ 文档放在语雀
+ 软件用 apple store + setapp
+ 电子书放 calibre

总结,文档分类,然后用不同的软件管理。
@eicky 可以试试看,然后指出哪些功能不如大象。
@Kahnn 试试看 clipper.website.这样你只需要用 notion 就好了。
2019-10-18 11:27:34 +08:00
回复了 everettjf 创建的主题 分享创造 远程输入法发布,用浏览器给手机打字
Mac 复制到剪切板,手机上直接粘贴就好了。
2019-10-11 19:46:50 +08:00
回复了 how2ex 创建的主题 程序员 如何自制 chrome 插件提取网页文本 [有偿服务]
@how2ex 我上面发的那个插件,开源免费的,可以保存网页到 语雀,有道云,onenote GitHub bear notion。而且可以安装插件的插件来扩展

如果需要适配特定的网站,可以联系上面的邮箱。
2019-10-11 19:38:49 +08:00
回复了 how2ex 创建的主题 程序员 如何自制 chrome 插件提取网页文本 [有偿服务]
@how2ex 怎么联系
2019-10-11 19:36:09 +08:00
回复了 how2ex 创建的主题 程序员 如何自制 chrome 插件提取网页文本 [有偿服务]
2019-10-11 19:35:17 +08:00
回复了 how2ex 创建的主题 程序员 如何自制 chrome 插件提取网页文本 [有偿服务]
https://clipper.website
2019-10-05 12:44:51 +08:00
回复了 ofooo 创建的主题 程序员 如何才能做到沉迷编程?
![IMG_5226.png]( https://i.loli.net/2019/10/05/H673ISEKPsVOCLr.png)


可以每天逼自己提交
2019-09-29 18:17:36 +08:00
回复了 djyde 创建的主题 分享创造 我在 UC 做的前端工程化探索
原本想提一下 umi 的,发现结尾已经有了。
2019-09-27 15:09:45 +08:00
回复了 sun1534 创建的主题 程序员 code 咨询师? BUG 修理工?
1 ... 3  4  5  6  7  8  9  10  11  12 ... 35  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2897 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 14:34 · PVG 22:34 · LAX 07:34 · JFK 10:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.