microsoft / microsoft/TypeScript

Declarations are not generated for a high order component

未关闭
#28,040 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

Domain: Declaration Emit Experience Enhancement Suggestion
主要语言
Go
星标
111k
派生
14.3k
平均合并
2 天 4 小时
30 天内合并 PR
132

描述

TypeScript Version: 3.2.0-dev.201xxxxx, 2.9.1, 3.1.3

Search Terms:

declaration, high-order, hoc

Code

export function Executor(func: () => any) {
  class ExecutingClass {
    execute() {
      func();
    }
  }

  return ExecutingClass;
}

Expected behavior:

Running both tsc and tsc -d produces no errors.

Actual behavior:

When I'm running tsc on this code, everything works fine.
When I'm running tsc -d on this code, I have this error:

hoc.ts:1:17 - error TS4060: Return type of exported function has or is using private name 'ExecutingClass'.

1 export function Executor(func: () => any) {

It is still possible to generate typings for this if you change code to this:

export function Executor(func: () => any) {
  const ExecutingClass = class {
    execute() {
      func();
    }
  }

  return ExecutingClass;
}

export default Executor;

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

使用列出的 TypeScript 版本分别通过 tsc 和 tsc -d 重现该示例,然后将其行为与匿名类变体进行比较。当原始导出的高阶组件生成不含 TS4060 的声明时,问题即得到解决;未指定任何仓库文件或测试。

由索引模型根据 Issue 内容生成。

评估

技术栈
typescript
领域
compilers
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
38/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。