如何在不使用default的情况下结合export与satisfies语法?
不使用default export的实现方式
你遇到的语法错误是因为export { ... }语法无法直接搭配satisfies使用——satisfies用来约束单个表达式的类型,而export { x, y, z }是导出多个已声明的独立变量,两者语法不兼容。
如果不想用default export,可以先将三个变量合并为一个符合Command类型的对象,再通过命名导出的方式导出这个对象,具体代码如下:
import type { Command, Commander, Options } from "zap"; import { Option, command } from "zap"; const name: string = "single"; const options: Options = { name: Option.string(), }; const commander: Commander = async ({ values }) => { console.log(`single file command for ${values.name}`); }; // 先合并对象并通过satisfies约束类型,再命名导出 const singleCommand = { commander, name, options } satisfies Command; export { singleCommand };
补充说明
如果zap库的Command类型要求导出的是一个包含commander、name、options三个属性的对象,那么分开导出三个独立变量是不符合库的类型要求的——因为库在导入时会期望获取一个完整的Command对象,而非三个零散的变量。因此上面的方式是最符合类型规范的命名导出实现。
内容的提问来源于stack exchange,提问作者kejedi
相关产品推荐
相关产品推荐

