typescript - 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);
当我调用tsc
generated.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'
.
那么我该如何解决这个问题呢?谢谢。
解决方案
回滚到 tsc 2.9.1,一切正常。
推荐阅读
- android - 检查用户是否已登录或未在颤动下
- javascript - 文件未上传到服务器
- powershell - 用 Powershell 替换文件中的多个字符串
- teradata - TPT 分隔数据解析错误:第 1 行中的列太多
- ios - 如何将输出设置到 AudioKit 中的特定通道?
- javascript - 如何在 Odoo 11 中通过 do_action() java-script 方法显示 action_id
- python - 有没有更简单的方法来删除数组中每个字符串前面的“-”
- ios - void函数中意外的非void返回值 - Swift 4(Firebase,Firestore)
- mysql - 操作存储在 mysql 文本列中的 Json 数据结构
- templates - Advanced Custom Fields not working for page template