首页 > 解决方案 > tsc 在使用高阶函数时生成无用的 d.ts 文件

问题描述

我正在尝试为我的库生成 d.ts。这是我的tsconfig.json

{
  "compilerOptions": {
    "outDir": "dist",
    "declaration": true,
    "declarationDir": "dist/typings",
    "target": "es5",
    "diagnostics": true,
    "lib": [
      "es5",
      "es6",
      "dom"
    ],
    "noEmitOnError": true,
    "noImplicitAny": true,
    "noImplicitThis": false,
    "noUnusedParameters": false,
    "noUnusedLocals": false,
    "experimentalDecorators": true
  },
  "include": [
    "src/**/*",
    "typings/**/*.d.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

这是源代码:

// script.ts
import { Application } from "../application";
export class ScriptType { }
export function createScript(ScriptConstructor: typeof ScriptType) {
    return (app: Application) => {
        // do something;
        return ScriptConstructor;
    }
}

// orbitCamera.ts
import { createScript, ScriptType } from "../script";
class OrbitCamera extends ScriptType { }
export default createScript(OrbitCamera);

当我调用tscgenerated.ts时,我得到以下结果:

$ cat dist/typings/scripts/camera/orbitCamera.d.ts
import { ScriptType } from "../script";
export declare class OrbitCamera extends ScriptType {
...
}
declare const _default: (app: import("../../../../../../../Users/u/Projects/p/src/application").Application) => typeof ScriptType;
export default _default;

这是没用的,当我d.ts在其他项目中引用这个文件时,它会抛出Cannot find name 'import'.

那么我该如何解决这个问题呢?谢谢。

标签: typescripttypescript-typings

解决方案


回滚到 tsc 2.9.1,一切正常。


推荐阅读