在我难以理解为什么在编译这两个实现时会有区别的时候,请引导我阅读一些文档:
function getPropImplicitAny<T, K extends keyof T>(p: K, buffer: T): T[K] {
const { [p]: value } = buffer; // element implicitly has an 'any' type
// because T has not index signature
return value;
}
function getPropTyped<T, K extends keyof T>(p: K, buffer: T): T[K] {
const value = buffer[p]; // value:T[K]
return value;
}
在我看来,两个函数对T
类型的结构及其与K
的关系都了解相同。他们两个都通过索引语法访问T
的成员。但是第一个无法以严格模式进行编译。
为什么?