typescript - 如何在 TypeScript 中默认导出其他导入类型的对象?
问题描述
我正在尝试为实用程序类的 JavaScript 包提供环境类型定义(比如 Lodash)。我希望用户能够通过以下方式导入模块:
// TypeScript or Babel
import myutils from 'myutils' // myutils = { a: [Function], b: [Function] }
import { a } from 'myutils' // a: Function
import a from 'myutils/a' // a: Function
// JavaScript
const myutils = require('myutils') // myutils = { a: [Function], b: [Function] }
const { a } = require('myutils') // a: Function
const a = require('myutils/a') // a: Function
代码结构如下:
// a.js
module.exports = () => 'a'
// b.js
module.exports = () => 'b'
// index.js
module.exports = { a: require('./a'), b: require('./b') }
我的问题是我无法为这些编写正确的 TypeScript 环境定义。到目前为止,我有:
// a.d.ts
export default function a(): string
// b.d.ts
export default function b(): string
// index.d.ts
export { default as a } from './a'
export { default as b } from './b'
export default ...what?
我也试过这个没有成功:
// index.d.ts
import a from './a'
import b from './b'
export { a, b }
// Member 'a' implicitly has an 'any' type, but a better type may be inferred from usage.ts(7045)
declare const _default: { a, b }
export default _default
谢谢
解决方案
问题是您在执行此操作时正在使用函数a
和b
类型:
declare const _default: { a, b }
改用typeof a
应该修复错误:
declare const _default: {
a: typeof a,
b: typeof b
}
推荐阅读
- java - 根据第一个 JComboBox 的选择,使第二个 JCombobox 可见
- git - Git:合并主分支时触发“机器人”提交
- sqlite - 如何在 sqlite3 数据库中创建 Pentaho 数据集成存储库?
- react-native - vs code react-native lint 冲突
- php - 以正确的方式处理 PHP 异常
- excel - DAX Power Pivot 建立现金流量表(间接方法)
- python - 在 Pandas 中将数据框列表导出和导入为 json 文件
- android - 无法在循环访问房间数据库之外获取文本输入
- hibernate - 如何在 Hibernate 中为 @oneToMnay 左连接设置 projectionList/resultTransformer
- django - Django ModelForm 某些字段未保存