[Typescript] Function scope in typescript
We have the following code which has compile error:
async function readData(event?: Event | unknown): Promise<void> {
// ...
let text: string | undefined
// ...
if (!text) return
setData((state) => ({ ...state, data: text })) // Typescript doesn't compile because text is still `string | undefined`
}
Main reason is about function scope, text
is defined in readData
function, and we try to use it in another function scope (
state
) => ({ ...
state
, data: text })
, because two different function scopes, therefore text
remains type string | undefined
Solutions to resolve this issue:
- Move to
readData
scope
if (!clipboardText) return
const data = clipboardText // move it here
setClipboardData((state) => ({ ...state, data }))
2. Move to arrow function scope
setData((state) => {
if (!text) return state;
return {
...state,
data: text
}
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-11-04 [Javascript] Broadcaster + Operator + Listener pattern -- 15. Create a Sequence of Broadcasters
2020-11-04 [Kotlin Spring boot] Connect template with a backing bean
2020-11-04 [Kotlin Spring boot] Enable automatically recompile for Spring boot project with devtool
2020-11-04 [Tools MarkDown] Create a Diff in Markdown to Show What Has Changed in a Code Snippet
2020-11-04 [Javascript] Broadcaster + Operator + Listener pattern -- 14. Marking Done Based on a Condition
2019-11-04 [NPM + React] Prepare a Custom React Hook to be Published as an npm Package
2019-11-04 [Debug] How to Debug a NestJs Backend using the Chrome Dev Tools