typescript - 打字稿我可以在函数体中使用泛型类型吗
问题描述
我有这样的函数声明:
export const filterOptions: <OptionValueType>(options: OptionsArray<OptionValueType>, filterBy: string) => OptionsArray<OptionValueType> = (options, filterBy) => {
if (filterBy === '') {
return [...options];
} else {
const filteredOptions: OptionsArray<OptionValueType> = [];
// filter and return options
return [...filteredOptions];
}
};
但是,打字稿将此代码标记为错误,我们可以在函数体中使用泛型类型吗?
const filteredOptions: OptionsArray<OptionValueType> = [];
TS2304:找不到名称“OptionValueType”
解决方案
您可以在主体中使用泛型类型参数,但泛型类型参数必须在函数实现上,而不是在将保存函数的变量上
export const filterOptions = <OptionValueType>(options: OptionsArray<OptionValueType>, filterBy: string) : OptionsArray<OptionValueType> => {
if (filterBy === '') {
return [...options];
} else {
const filteredOptions: OptionsArray<OptionValueType> = [];
// filter and return options
return [...filteredOptions];
}
};
推荐阅读
- laravel - 如何将自定义中间件添加到 Laravel Nova
- jestjs - 开玩笑,一个测试中的数据流向另一个
- kubernetes - 即使获得授权,DNS 查找仍会被阻止
- android - 滑动时从 recyclerview 中删除项目时,恢复和删除选项不会立即显示。它仅显示何时再次创建呼叫
- laravel - 使用 2 个不同的表登录身份验证
- c++ - 将 push_back 用于向量
> 在 C++ 中正确使用 for & while 循环? - java - 检查包含 avro 事件的字节数组是否对应于特定模式
- java - 从库 jar 中获取执行位置
- javascript - 如何将一些代码传递给接受回调的函数?
- javascript - 如何在 React 中为项目添加过渡效果