打字稿解构和隐式任何

时间:2019-01-30 07:33:07

标签: typescript

在我难以理解为什么在编译这两个实现时会有区别的时候,请引导我阅读一些文档:

  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的成员。但是第一个无法以严格模式进行编译。 为什么?

1 个答案:

答案 0 :(得分:1)

您描述的问题已在打字稿3.2中修复。 This问题描述了您的确切问题,该问题已包含在打字稿3.2中