如何从通用密钥获取通用属性的确切类型

时间:2020-03-31 13:00:51

标签: typescript

我有一个今天的函数签名:

getProperty<T extends HTMLElement>(name: keyof T): Promise<T[keyof T]>;

我正在构建扩展HTMLElement的Web组件,说我已经添加了一个名为rows的属性,该属性的类型为Row[]。 如果我这样称呼它(在一些测试工具中):

const rows = componentWrapper.getProperty<TableComponent>('rows');

rows的类型通过TableComponent中的键变为所有可能类型的并集,这就是我期望keyof起作用的方式(因此将其用于name参数很有意义)。

我要实现的是通过将return键入为rows以外的其他内容来推断Row[]的类型为Promise<T[keyof T]>,我如何才能得到是根据name参数抓取的?

1 个答案:

答案 0 :(得分:0)

正如Artem Bozhko在评论中所写,这有效:

getProperty<T extends HTMLElement, K extends keyof T>(el: T, name: K): Promise<T[K]>

由于TypeScript将从参数列表中推断出T和K的类型,因此您也可以在没有通用参数列表的情况下调用该函数。

相关问题