gpt4 book ai didi

typescript :参数 'error' 隐式具有 'any' 类型

转载 作者:行者123 更新时间:2023-12-05 02:15:50 26 4
gpt4 key购买 nike

第一天使用 typescript ,我遇到了~逻辑错误?

server.ts

interface StopAppCallback {
(err: Error | null): void
}

interface StartAppCallback {
(err: Error | null, result?: Function): void
}

export default (startCb: StartAppCallback): void => {
const stopApp = (stopCb: StopAppCallback): void => {
return stopCb(null)
}

return startCb(null, stopApp)
}

boot.ts

import server from './src/server'

server((err, stopApp) => { //<-- no error
if (err) {
throw err
}

if (typeof stopApp !== 'function') {
throw new Error('required typeof function')
}

stopApp((error) => { //<-- tsc error
if (error) {
throw error
}
})
})

tsc 错误:参数“错误”隐式具有“任何”类型

我不明白,接口(interface)的定义和设置方式相同。那么这是怎么回事?在设置中关闭 noImplicitAnystrict 或添加 :any 是愚蠢的。

我在 tsc 逻辑中不明白什么?还是我定义有误?

最佳答案

问题出在 StartAppCallback 接口(interface),将 result? 定义为 Function。传递给 stopApp 的回调成为 Function 类型。具有该类型的函数的参数没有任何明确的类型,因此会出现错误。一个更简单的例子:

// this will give the error you're dealing with now
const thing: Function = (arg) => arg

解决方案:将 result 定义为实际的样子:

interface StartAppCallback {
(err: Error | null, result?: (stopCb: StopAppCallback) => void): void
}

作为一般规则,尽可能避免 Function 类型,因为它会导致不安全的代码。

关于 typescript :参数 'error' 隐式具有 'any' 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50962158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com