我有以下代码:
interface IHandleSelection {
(value: string): any | void;
}
interface IPipeChangeEventValueToFunction {
(handler: IHandleSelection): (event: React.ChangeEvent<HTMLSelectElement>) => void;
}
const pipeChangeEventValueToFunction: IPipeChangeEventValueToFunction = handler => event =>
handler(event.target.value);
...
// within a component where onSelection is a prop of type IHandleSelection
<select
onChange={pipeChangeEventValueToFunction(onSelection)}
>
出现错误的地方:
属性'value'在'EventTarget&类型上不存在 HTMLSelectElement'
我尝试了here(及其他地方)建议的修复程序:
const pipeChangeEventValueToFunction: IPipeChangeEventValueToFunction = handler => event => {
const test = event.target as HTMLSelectElement;
const a = test.value;
}
但是我得到完全相同的错误(也许并不奇怪)。
对这里发生的事情有任何想法吗?看来有点打字错误。
答案 0 :(得分:1)
好像您的项目中没有包含typescript/lib/lib.dom.d.ts
。
您可以通过更改tsconfig.json
并将dom
添加到compilerOptions.lib
来做到这一点,如下所示:
{
"compilerOptions": {
...
"lib": ["es2017", "dom"],
...
}
}
或者您可以将以下参考三斜杠指令添加到您的一个声明(*.d.ts
)文件中。
/// <reference lib="dom" />