打字稿选择字符串属性

我试图找出如何正确键入show,将采取一个对象的功能T和一键K为其T[K]能保证有一个toString()方法来实现。

这是我尝试使用映射类型

type ToStringablePropertyKeys<T> = keyof {
    [K in keyof T]: { toString(): string }
}

function show<T, K extends ToStringablePropertyKeys<T>>(t: T, k: K): string {
    return t[k].toString()
}

但是编译器说 Property 'toString' does not exist on type 'T[K]'.

我在这里缺少什么?我怎样才能让tsctoString实际上是在通过有定义K

回答

另一种方法:

function show<K extends string, T extends {[key in K]:{toString(): string}}>
(t: T, k: K ): string {
return t[k].toString()
}

  • nice thinking outside the box!

以上是打字稿选择字符串属性的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>