46 条回复  ·  441 次点击
wuchangming89 小成 2024-9-2 14:18:32

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

```ts
/**
* 安全获取对象属性
* 例子:
* const obj = { a: { b: { c: 1 } } };
* const c = safeGet(() => obj.a.b.c);
* console.log(c); // 1
* const notExist = safeGet(() => obj.a.b.d);
* console.log(notExist); // undefined
*
* @param getProps
* @returns
*/
export function safeGet<T>(getProp: () => T): T | undefined {
    try {
        return getProp();
    } catch (e) {
        return undefined;
    }
}
```
gogogo1203 小成 2024-9-2 14:40:05

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

真是辣眼睛...      immer 直接就全干了.  typescript+ zod 验证都是基操了。 有这个精力干点什么不好
Leviathann 初学 2024-9-2 14:42:00

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

typescript 早就可以做到类型安全的 Path/Get 了,灵活性和安全性都完全兼顾

https://github.com/sindresorhus/type-fest/blob/main/source/paths.d.ts#L101
https://github.com/sindresorhus/type-fest/blob/main/source/get.d.ts#L192
oamu 小成 2024-9-2 15:54:59

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

总有人认为自己写的比库强。
qingyingwan 小成 2024-9-2 22:53:00

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

我第一年学前端的时候也像你这样实现了一个小工具就很高兴想炫耀一下,现在已经工作 9 年了也不做纯前端了,很怀念之前那种做一个小功能点就很高兴的时候,加油。楼上的各种解决方案也都不错,但是回到 8 年前我也会选择自己手写一个,如果我没经历那种热情,现在估计早就失业了
alleluya 小成 2024-9-3 09:40:10

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

@gouflv 啊? 小程序还有圈子的吗 小程序不都是前端捎带着写的东西么
lyxxxh2 小成 2024-9-3 11:18:06

5 个前端 JS 函数,只为了优雅解决 a.b.c.d = 1 问题

这不就是 laravel 配置的操作...
https://www.kancloud.cn/learnku_/framework/1835172
```
$val = config('a.b.c')
config('a.c.b',"helloworld")
```

除了配置,没那个数据有这么多层级。
所以创建个不常用函数,意义不大。
12345
返回顶部