typescript - 如果 keyof 则推断函数签名
问题描述
我正在尝试通过以下添加(注)定义一个函数签名根据是否更改的Column
类型:render
name
keyof Row
name?: string
| {
name?: string
render: (payload: { row: Row }) => string
}
请注意,从代码示例中删除上面的 ^ 会使一切按预期工作,只要name
是keyof Row
有没有办法做我想做的事情,或者这是打字稿限制?这是完整的代码示例:
type Column<Row> = {
[K in keyof Row]: {
name: K
render?: (payload: { value: Row[K], row: Row }) => string
}
}[keyof Row] | {
name?: string
render: (payload: { row: Row }) => string
}
interface MyRow {
foo: string
}
const columns: Column<MyRow>[] = [{
name: 'foo',
render: ({ row, value }) => value
}, {
name: 'notInMyRow',
render: ({ row }) => {
return 'hello'
}
}]
相关错误:
Binding element 'row' implicitly has an 'any' type.(7031)
解决方案
推荐阅读
- python - 从 tkinter 类调用方法
- excel - 突出显示重复对
- android - 调试 Xamarin.Forms 应用程序时更改默认 Android 模拟器?
- angular - Firebase once("value") 触发“then”和“catch”
- python - 训练 acc 减少,验证 - 增加。训练损失,验证损失减少
- python-3.x - 如何为 LSTM 输入合并两层不同形状的层?
- python - 在使用 python2.7 和 c++rest 时降低冲突
- oracle - ORACLE 脚本 SQL
- dom - 找出 DOM 树中节点的位置?
- scala - Store Comonad 和 Representable Store Comonad 在函数式编程中有什么区别?