如何将参数的属性分配给泛型?这是代码:
const foo = <T = ???someObject.bar???>(someObject: {[string]: any}): T => {
return someObject.bar
}
如何将T
分配给bar
的{{1}}属性?
答案 0 :(得分:1)
因此,您希望参数至少具有属性bar
,对吗?
这意味着它是
interface WithBar<T> {
bar: T
}
使用此方法,您可以通过以下方式编写函数:
const foo = <T>(someObject: WithBar<T>): T => {
return someObject.bar
}
为避免引入人工WithBar
类型,请直接编写
const foo = <T>(someObject: { bar: T }): T => {
return someObject.bar
}
您现在可以通用使用它:
const barFoo1 = { bar: "asdf", foo: "fdsa"};
const myBar1: string = foo(barFoo1);
const barFoo2 = { bar: 123, foo: 321};
const myBar2: number = foo(barFoo2);