【发布时间】:2021-04-23 18:21:40
【问题描述】:
我正在将 JS 代码重构为 TS(实际上是 jsx/tsx),但我遇到了函数问题。
为了简化问题...假设我得到了这个函数“checkIt”,它可以接收一个字符串或数字作为参数并返回一个布尔值。
这是JS函数:
const FIRST_ROW = 'Initial';
const SECOND_ROW = new Set([1, 2, 3, 4]);
const checkIt = id => {
if (FIRST_ROW.includes(id) || SECOND_ROW.includes(id)) {
return true;
}
return false;
}
这是我的试验......(因为我正在学习 TS,我喜欢声明推断变量是一致的)
const FIRST_ROW: string = 'Initial';
const SECOND_ROW: Set<number> = new Set([1, 2, 3, 4]);
const checkIt = <T,>(id: T): boolean => {
if (FIRST_ROW.includes(id) || SECOND_ROW.includes(id)) {
return true;
}
return false;
}
这让我在函数内的“id”引用上出现错误:'T' 类型的参数不可分配给'string' 类型的参数(或'number' )。 我试过使用函数表达式,Union string | number(如here 解释的那样)、不同形式的泛型编写和重载(如here,我就是无法让它工作。
这里有什么帮助吗? 谢谢!
【问题讨论】:
标签: javascript typescript typescript-generics react-tsx