提问人:Ytus 提问时间:2/16/2023 更新时间:2/16/2023 访问量:228
Typescript:传递回调而不是函数引用会导致结果的类型未知
Typescript: Passing a callback instead of a function reference causes the result to be of a type unknown
问:
在下面的例子中,类型是 a(没关系),但 的类型是 。并且行上有一个 TS 错误:a
string
b
unknown
x => doSomething(x)
“unknown”类型的参数不能分配给“string”类型的参数。(2345)
(如果下面的代码看起来不是很有用,那是因为它是具有相同问题的真实代码的极其简化的版本。
type F<a> = (x: a) => a
function returnF<a>(f: F<a>): F<a> {
return f
}
function doSomething(s: string): string {
return s
}
const a = returnF( // 'a' is a string
doSomething
)("A")
const b = returnF( // 'b' is unknown
x => doSomething(x)
)("B")
const c = returnF<string>( // 'c' is a string
x => doSomething(x)
)("C")
我的问题是:
- 为什么更改为会引入错误?
returnF(doSomething)
returnF(x => doSomething(x))
- 有没有办法更改代码,以便我仍然可以使用,但我不必在每个地方指定类型,在哪里使用?
returnF(x => doSomething(x))
<a>
returnF
答:
0赞
Eldar
2/16/2023
#1
因为是一个匿名函数,并且没有为参数指定类型。 是未指定参数的默认值。如果你想让它正常工作,你应该明确指定类型,就像x => doSomething(x)
x
unknown
(x:string) => doSomething(x)
评论