首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Typescript 中,这些类型工具真好用

是否曾经用 TypeScript 写代码,然后意识到这个包没有导出我需要类型,例如下面这段代码提示 Content 在 @example 中不存在: import {getContent, Content...例如,下面我有一个编辑日历事件简单组件,我们在其中维护一个处于状态事件对象,并在发生变化时修改事件标题。 能发现下面这段代码错误?...这将导致我们输入不能预期那样工作,因为 React 不会意识到状态变化,因此不会呈现变化。 我们需要做是用一个新对象调用 setEvent。...那你可能突然会问:为什么 TypeScript 没有捕捉到这个错误呢? 从技术上讲,可以用 useState 改变对象。...,我们可以把它和它兄弟类型 ArrayReadonly 结合起来,再加上一点魔法,创建我们自己 DeepReadonly 类型,这样: export type DeepReadonly =

19030
您找到你想要的搜索结果了吗?
是的
没有找到

什么叫代码可读性?为什么说Kotlin可读性比Java好?

如果在小红书有个同事非要执意这样写代码,理由是“多读个两三遍不就好了嘛?”我想我只能把他开除了。 其实,如果一段代码需要你多读个两三遍才能很好理解,这本身不就说明,这段代码可读性不高?...在比较两种不同风格可读性时候,不能用具体某一个一次性片段来说明。 另外,这篇文章还暗含了这样一个观点,那就是,代码可读性,仅仅是指,看到一段代码,能不能理解这段代码含义。...要理解这段代码并不难(其实后面会看到,要确保正确理解这么代码也没那么简单),但是速度并不快,必须从头到尾看完这8行代码,就算你说最后两行可以一扫而过,那也必须看完前面6行,才能知道“哦,原来这段代码事情是...因为它带来心理上relief,是巨大。我们看以下里面的代码。 如果写了个自定义Layout继承自,结果它表现出来样子不符合预期可能会去看源码。...看到上面这段,最后发现,原来是这个成员变量值不对。那么,怎么知道是哪里改变了这个变量值,导致它被赋给了一个错误值呢?

1.1K70

为什么说Kotlin可读性比Java好?

并且作者举了一个在我看来,不知道该怎么来描述例子: 这个作者大意是,上面这段文章,多读个两三遍,也会很快理解它意思,所以“对于熟练读者而言,外观很少会成为可读性障碍。”...如果在小红书有个同事非要执意这样写代码,理由是“多读个两三遍不就好了嘛?”我想我只能把他开除了。 其实,如果一段代码需要你多读个两三遍才能很好理解,这本身不就说明,这段代码可读性不高?...在比较两种不同风格可读性时候,不能用具体某一个一次性片段来说明。 另外,这篇文章还暗含了这样一个观点,那就是,代码可读性,仅仅是指,看到一段代码,能不能理解这段代码含义。...要理解这段代码并不难(其实后面会看到,要确保正确理解这么代码也没那么简单),但是速度并不快,必须从头到尾看完这 8 行代码,就算你说最后两行可以一扫而过,那也必须看完前面 6 行,才能知道“哦,原来这段代码事情是...如果写了个自定义 Layout 继承自 LinearLayout,结果它表现出来样子不符合预期可能会去看源码。

1.9K50

疫情下为什么年轻、未婚女性更容易拿到offer

大家都知道我们行业女生是不多得,这段时间我帮助了一位女生,毕业4年,数据仓库,在上海,她机会多让我产生了好奇,多到什么程度那?一周平均每天一个机会,有的时候一天能面试三家公司?...就比如离职理由来讲,“我不喜欢出差” 说我们说是实话?这个合理?对于30,40岁的人来说,肯定是合理。但是对于面试官,特别是做管理面试官,他是不能接受。因为这是态度问题。...所以面试就要说面试的话,而不是私底下聊天那样,要分场合。 4.面试都要说实话 很多人以为面试都要说实话,我们提倡说实话,鼓励说实话,而且说实话的人,人品肯定是没问题。...但是有些说实话,在面试中是不能接受,说出来就是态度问题,就比如我们上面提到离职理由。再比如大数据来说,很多公司都有大数据,可是有的公司就几台机器,得大数据经验上得了台面?...我们很多人知道面试,其实很多人造假,以为造假,面试官瞎?他看不到?面试官知道造假为啥有的毕业生还是会给offer?

23120

线程安全queue-浅谈线程安全那些事儿

什么情况下,访问数据是不安全?如何知道代码是否线程安全?要如何访问数据才能保证数据安全?   本篇文章会一一回答问题。   1. 线程不安全是怎样?   ...当我们还是无法确定我们代码是否具有原子性时候,可以尝试通过 dis 模块里 dis 函数来查看   当我们执行这段代码时,可以看到 number += 1 这一行代码,由两条字节码实现。   ...实现人工原子操作   在多线程下,我们并不能保证我们代码都具有原子性,因此如何让我们代码变得具有 “原子性” ,就是一件很重要事。   ...为什么 Queue 是线程安全?   Python 模块里消息通信机制主要有如下三种:   使用最多是 Queue,而我们都知道它是线程安全。...其根本原因就是 Queue 实现了锁原语,因此他能第三节那样实现人工原子操作。

43120

Matt Dowle 演讲节选(一)

2014年洛杉矶会议上演讲。在这段21分33秒演讲中,Matt 回顾了自己在伦敦大投行工作经历(雷曼兄弟以及所罗门兄弟)、自己与 R 偶遇以及开发 data.table 动机。...Matt 说着输入了以下代码: DF[2:3, sum(B)] # 3+5=8 Pat:啊亲爱朋友,不能这样做。 Matt:Why?...Matt 后来经过了多次尝试,返回永远都是错误: object "B" not found Pat:我早和你说了,那样做不行,放弃挣扎吧年轻人。 Matt:我们能让 S-PLUS 改?...那你们能把代码发给我吗?我来修复它——我不要报酬,我只想让完成我工作。 客服:很抱歉,我们不能这样做。律师说 No。 Matt:那你有什么别的建议? 客服:说过 R ?...我后来才知道,原来早在12年前(这是2014年演讲), R 已经大大提高了 for 循环速度,并且把所有的数据都保存在内存中,而不是放在硬盘上。 更重要是,R 在运行这段程序时候不再闪退了。

63720

在创业公司,我靠它续命 ...

大家简单过一下前一天进度,以及今天安排,然后就是各忙各。 创业公司因为人比较少,不像大公司分工那么细,所以对个人综合能力要求比较高一些,因为碰到一些问题,不能大公司那样互相推诿。...除了帮助写代码,还可以 Cursor 问一些技术上问题,比如: Q: 可以传一个模拟设备给QAudioInput?...不能直接将一个模拟设备(如一个文件或一个缓冲区)传递给QAudioInput。 然而,可以创建一个自定义类来模拟QAudioInput行为,如我之前所示那样。...这样,上层调用者可以使用QAudioInput一样使用你类,而不需要知道它实际上是一个模拟音频设备。...更神奇是,写出代码还有注释,代码后面还有对这段代码说明,真的是贴心到家了。 在工作中,借助一些 AI 工具,无疑能大大提供我们工作效率。但要说 AI 能取代程序员,还为时尚早。

15430

瞒不住了,Prefetch 就是一个大谎言

但是现在prefetch 效果有多糟糕我想你也知道。例如,为了让应用程序拆解成多个包,在你代码某些地方,会进行动态导入,比如 import('./some-dependency.js')。...下面这段代码中,假设代码放在惰性加载块后面的 Buy 按钮后面,看起来这样:export default () => { return ( 但是这段代码真的会如你所愿?...也不太确定,因此接着,在 Chrome 中测试它,发现一切都能正常工作。但是很快,就会得到反馈,在许多情况下,用户必须等待 Buy 按钮执行其操作。这种额外等待正是损害用户体验底线。...那 prefetch 为什么不能如你所愿呢? 原因主要由几点:Modulepreload 不能在大多数浏览器中使用。

67300

瞒不住了,Prefetch 就是一个大谎言

但是现在prefetch 效果有多糟糕我想你也知道。 例如,为了让应用程序拆解成多个包,在你代码某些地方,会进行动态导入,比如 import('./some-dependency.js')。...下面这段代码中,假设代码放在惰性加载块后面的 Buy 按钮后面,看起来这样: export default () => { return ( 但是这段代码真的会如你所愿?...也不太确定,因此接着,在 Chrome 中测试它,发现一切都能正常工作。 但是很快,就会得到反馈,在许多情况下,用户必须等待 Buy 按钮执行其操作。这种额外等待正是损害用户体验底线。...那 prefetch 为什么不能如你所愿呢? 原因主要由几点: Modulepreload 不能在大多数浏览器中使用。

30720

如何判断自己是否具有成为一名优秀程序员潜质

尤其是当你来自于一个无聊工作钉马掌这样永远不变事情时 =-)。...3) 面对压力、紧张和限定期限 ---- 没错,每个人都喜欢使用软件,但喜欢面对任务最后期限和最终目标?需要什么时候完成?做完这些要花多少时间?我们能在这段时间里完成更多任务?...是否喜欢想出办法来替完成那些重复工作能很好安排各种不同任务?如果不能,那你就不适合去当一名程序员。...这个应用工作原理是什么?那个横跨街道建筑是怎么建起来?程序员之间对话听起来总是这样开始:“很奇怪他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪表现,但现在我明白,至少是在软件开发中,这是一个好品质。 ««« 不明白事情会引起好奇心?新事物会让兴奋想搞清楚它原理

59660

如何判断自己是否具有成为一名优秀程序员潜质

尤其是当你来自于一个无聊工作钉马掌这样永远不变事情时=-)。...3) 面对压力、紧张和限定期限 没错,每个人都喜欢使用软件,但喜欢面对任务最后期限和最终目标?需要什么时候完成?做完这些要花多少时间?我们能在这段时间里完成更多任 务?...是否喜欢想出办法来替完成那些重复工作能很好安排各种不同任务?如果不能,那你就不适合去当一名程序员。...这个应用工作原理是什么?那个横跨街道建筑是怎么建起来?程序员之间对话听起来总是这样开始:“很奇怪 他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪表现,但现在我明白,至少是在软件开发中,这是一个好品质。 ««« 不明白事情会引起好奇心?新事物会让兴奋想搞清楚它原理

94490

12种降低开发者工作效率方法

众所周知,程序员们不能无电脑操作徒手写代码,但有很多公司却忽视了心境重要性——两者缺任何一个都不现实。 接下来我们剖析一下,对开发者而言,哪12件事情会阻碍TA们工作状态和延缓生产力。...开发者往往会启动TA们觉得合适功能,但一旦管理人员更详细地说明了预期功能,TA们可能会逼不得已从头再看。 不清晰工作优先级也属于这一类行为。...可惜是,许多程序员错误地把这句话理解为,TA们必须对每一行代码都进行注释,这就是为什么我们经常看到下面这样代码(取自于美国著名程序员Jeff Atwood发表“无注释编码”博客文章)。...than t while (abs( r — (n/r) ) > t ){ r = 0.5 * ( r + (n/r) ); // Set r to half of r + (n/r) } 知道这段代码是干什么...我也不知道。问题是虽然有大量注释描述代码,但没有任何注释描述它为什么要这么做。如果程序中存在一个bug,而你偶然发现了这段代码将茫然不知从何下手。

1.2K2914

一劳永逸地搞懂 JavaScript中‘this’

从小脚本到庞大Web应用程序,它都会显现出来。 提高水平:解读 this 意味着正在走向经验丰富专家那样编码。这是更接近健壮且无错误脚本一步。...在浏览器中: 如果在浏览器中运行 JavaScript 代码(像我们大多数人经常做那样),全局上下文中this指的是window对象。这是因为,在浏览器中,window 对象就是全局对象。...这都是关于来自哪里 知道在生活中,我们中一些人根据我们所在地方和我们与谁在一起会戴不同帽子?常规函数也做类似的事情与 this。...在一个网页上,最喜欢歌正在播放,有一个按钮在那里诱惑点击它。在你知道之前,JavaScript魔法就活了起来,事情开始发生。但有没有想过内部工作,使这些DOM元素跳舞隐藏木偶线?...这不会按预期工作。 } }; person.greet(); // 输出:Hello, undefined 动态方法:当你动态地添加方法到一个对象时,确保知道this引用是什么。

10510

异步函数中异常处理及测试方法

安排明明白白! 所以无论异常是从常规函数还是从类构造函数(或从方法)抛出,一切都会按照预期工作。 但是如果我想从异步函数中抛出错误怎么办? 我可以在测试中使用assert.throws?...测试异常 所以应该知道什么是 Javascript 异步函数,对?先看一段代码: ? 假设要添加异步方法来获取有关该人数据。这种方法需要一个网址。...如果url不是字符串,就要上一个例子中那样抛出错误。 先来修改一下这个类: ? 如果我运行代码会怎么样?试试吧: ? 结果是这样 ?...被拒绝Promise将会在堆栈中传播,除非你抓住(catch)它。 至于测试代码,应该这样写: ? 我们测试不能是普通异常,而是带有TypeErrorrejects。 现在测试通过了: ?...记住:被拒绝Promise会在堆栈中传播,除非你抓住(catch)它。 要在 try/catch 中正确捕获错误,可以这样重构: ? 这就是它工作原理。

2.9K30

命名在编程中重要性

这段代码有什么问题?函数名称隐藏了很多关于它所做事情细节。它根本没有提到我们必须获取机器或设置工作人员,也没有提到该函数将导致创建一个在后台继续执行作业。...一个好名字会告诉所有需要知道,或者会告诉足够信息让知道下一步应该去哪里查找。它不会让猜测,或者困惑。它不会误导。一个好名字是明显,是可以预期。它是一致。不会过于创新。...如果不喜欢找到名字,那意味着不喜欢所命名事物,应该通过改进代码设计来改变这个事物(就像我们在第二个例子中所做那样)。...有时候不能,因为有些东西不能代码中捕捉到(例如,某些假设,解释,例子,...),这也是可以。但是不要在注释中重复可以在代码中说内容。...以命名为重点代码审查一旦开始深思熟虑地命名,会看到它是如何改变代码审查过程:焦点从查看实现细节转移到首先查看名称。当我在进行代码审查时,我会有一个主要思考:“这个名字清晰?”。

4010

如何成为优秀程序员?

尤其是当你来自于一个无聊工作钉马掌这样永远不变事情时 =-)。...3) 面对压力、紧张和限定期限 没错,每个人都喜欢使用软件,但喜欢面对任务最后期限和最终目标?需要什么时候完成?做完这些要花多少时间?我们能在这段时间里完成更多任务?是否还记得要注意细节?...是否喜欢想出办法来替完成那些重复工作?能很好安排各种不同任务?如果不能,那你就不适合去当一名程序员。...这个应用工作原理是什么?那个横跨街道建筑是怎么建起来?程序员之间对话听起来总是这样开始:“很奇怪他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪表现,但现在我明白,至少是在软件开发中,这是一个好品质。 ««« 不明白事情会引起好奇心?新事物会让兴奋想搞清楚它原理?

63850

为什么虚拟机开机即卡死?以及我是怎么修补

给出我解决方法,不一定对症,也不一定对我下一次症。但至少,我把病根抓出来晾晒。 前面的所有工作都不说了,最终我发现是由于内存被占满导致无法正常进入图形界面的。...发现是由于猜想,但是毕竟是猜想,我发现只有几百M内存了,但是我不知道是不是那个原因。于是我把内存扩容,并压缩,给它2G内存,但它还是打不开,我不确定是否是由于内存不足。...回想起今天有内存不足警告,我确定了,就是内存不足。 ---- 现在看上面这段话是不是讲故事一样,排查过程辛酸只有自己知道。...我去看了,原创作者是那样解决了,底下一堆评论问为什么他们那样不能解决。那不是废话,环境都不一样。至于网上其他抄袭底下根本没评论。跟着做大概率是不行。...还有一些测试代码,由于是debug版本,所以也有点大,清理之后腾出来两三G空间。 这时候就够用了,别再删了,估计能勉强开机就好。

2.3K20

volatile关键字在Android中到底有什么用?

所以我准备写篇文章来剖析一下这个关键字,顺便回答一下这些朋友疑问。 由于这篇文章是我用周日一天时间赶出来,所以可能不会平时文章那样充实,但是对于上述问题我相信还是可以解释清楚。...理论上来说,这两个线程同时运行,那么就应该一直交替打印,改我值,我再给你改回去。 实际上真的会是这样?我们来运行一下就知道了。 ?...一切如我们所预期那样运行了。 指令重排问题 volatile关键字还有另外一个重要作用,就是禁止指令重排,这又是一个非常有趣问题。...那么这段代码可以正常工作?未必,因为根据刚才指令重排理论,Thread1中value和init这两个变量之间是没有先后顺序。...根据我实际测试,确实基本上都是可以正常工作。 但是这种写法真的安全

59020
领券