给定以下使用泛型类型参数的类型化React组件,我该如何将其包装在React的新forwardRef
API中?
type Props<T> = {
forwardedRef?: Ref<HTMLInputElement>
...
}
class GenericComponent<T> extends Component<Props<T>> {
...
}
const ComponentWithRef = forwardRef<HTMLInputElement, Props<T>>((props, ref) => (
<StringInput<T> {...props} forwardedRef={ref} />
))
上面的方法无法定义T
泛型。
因此,为了扩大问题范围,这实际上是关于在更高阶函数中保留泛型类型的问题。的以下用法forwardRef
将正确类型检查(在中3.0.1
)
const SelectWithRef = forwardRef(<Option extends string>(props: Props<Option>, ref?: Ref<HTMLSelectElement>) =>
<Select<Option> {...props} forwardedRef={ref} />);
但是,Option
泛型会立即解析为string
,而不是保留为泛型。因此,以下内容不会进行类型检查
const onChange: (value: 'one' | 'two') => void = (value) => console.log(value);
<SelectWithRef<'one' | 'two'>
^^^^^^^^^^^^^^^ [ts] Expected 0 type arguments, but got 1
value="a"
options={['one', 'two']}
onChange={onChange}
^^^^^^^^^^ [ts] Type 'string' is not assignable to type '"one" | "two"'
/>
在此Typescript发行凭单中跟踪了相关的发行。
我是Typscript 2的新手。我想做的是在typescript中使用jQuery。在这个问题中,我读到你需要两件事: 这将安装包“@types/jquery 2.0.39”。 然后,在打字稿文件中,我把这个: 但是我收到打字稿错误“找不到模块'jquery'。我做错了什么? 与相同的错误 完整类型脚本文件:
问题内容: 我刚刚开始学习Java流,并遇到了问题。请看下面的例子。这是Node类的一部分: 我的意图是在流中的每个节点上使用名称和结果参数调用#findChildren。我尝试使用方法引用Node :: findChildren时没有运气。我将不胜感激的解决方案与运营商。 是否可以将方法引用与参数一起使用?我喜欢流的想法,我只想使代码更具可读性。 实际上,我认为还有一个类似的问题,方法引用具有读
到目前为止,我们已经习惯了tsd或(更好的版本)打字 但是现在 TypeScript 2 提供了新的@types功能,我应该如何将我当前的项目转换为与一起使用? 我有tsd.json(在某些情况下是typings.json)和所有的依赖项,迁移到TypeScript 2的步骤是什么? 有哪些新的最佳实践?@types是否支持特定版本?
泛型lambdas能利用“替换失败不是错误”规则吗?例子 是否有任何解决方法或计划将其包含在语言中?此外,由于通用lambda是引擎盖下的模板化函数对象,因此无法做到这一点不是有点奇怪吗?
问题内容: 这是我尝试在其上使用该函数的循环: 有办法吗?如果不是参数,那将是微不足道的,但是我不确定如何处理。 问题答案: 用途: 创建一个新的可调用对象,除了传递给该新的可调用对象的内容之外,该参数还将对包装的函数应用所有参数(包括关键字参数)。
问题内容: 我已经看到了许多有关在Sql查询中使用参数和“赞”的问题,但是我尝试了各种方法来对其进行编码,但仍然无法使我的查询给出结果。如果我在查询本身中输入一个值,它会很好地运行。当我运行列出的第一个查询时,出现错误“必须声明标量变量“ @Search”,但我认为我使用cmd.Parameters.AddWithValue语句做到了。有人可以看到我可能在做错什么吗?感谢您的任何帮助。 问题答案: