- VSCode版本:1.34
- 操作系统版本:Linux Mint Tessa
以下代码破坏了TS的智能感知。
export function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(
obj: T,
keys: [K1, K2]
): T[K1][K2];
export function get<
T,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2]
>(obj: T, keys: [K1, K2, K3]): T[K1][K2][K3];
export function get(obj: any, keys: any[]): any {
for (const key of keys) obj = obj[key];
return obj;
}
这些是TS的建议
然而,它们是错误的,因为第三个值需要是路径上对象的属性,确切地说只有值 'c'
。
类型正确,因为智能感知能够推断出结果
此外,它拒绝了除 'c'
之外的所有值,这意味着智能感知应该能够提供正确的建议。
2条答案
按热度按时间1bqhqjot1#
使用TypeScript@3.5.0-dev.20190525进行测试。
完整示例:
jexiocij2#
我对这个很感兴趣,想试一下。也许有人能给我一些建议,告诉我应该从哪里开始研究?